SQL 服务器:DELETE <Table> 和 DELETE from <Table> 之间的区别

SQL server: difference between DELETE <Table> and DELETE from <Table>

SQL 服务器:
之间的差异:

Delete tblxyz where id=6 

和:

Delete from tblxyz  where id=6

它们与上述查询有什么区别吗?

两种说法没有直接区别 (除了我发现 "DELETE FROM" 更容易阅读和理解)

请注意,如 jarlh

所述,ANSI 确实需要 "FROM" 关键字

另见 https://msdn.microsoft.com/en-us/library/ms189835.aspx

如果你看到执行计划都生成删除脚本,没有区别,如下所示

DELETE [testtable]  WHERE [numbers]=@1

根据 MSDN,单词 "from" 是可选的。默认不使用:

FROM

and the target table_or_view_name, or rowset_function_limited.An optional keyword that can be used between the DELETE keyword

但是在 MS Access(或者可能是其他一些数据库)中,您可以使用 delete * 命令删除一行,因此您必须使用 from:

delete * from phoneBook where....

你的删除没有区别

但是,FROM 子句是一个功能齐全的 from 子句,因此您可以将它与 JOIN 一起使用。例如:

delete t
    from t join
         (select min(id) as minid
          from t
          group by grp
         ) tt
         on t.id = tt.minid;

这将删除每个 grp 值具有最小 ID 的记录。 delete后面的别名需要指定从哪个table中删除(虽然在这种情况下,不允许从聚合结果中删除)。

注意:此查询仅用于说明目的。查询没有任何问题,但这不是我在 SQL 服务器中实际编写这样的查询的方式。

from 子句是可选的..下面是语法的简化版本..

删除
[ TOP ( 表达式 ) [ PERCENT ] ]
[来自]
{ { table_alias

FROM An optional keyword that can be used between the DELETE keyword and the target table_or_view_name, or rowset_function_limited.