Ham*_*jan 17 sql t-sql delete-row sql-delete
我是SQL的新手.我们有一些代码可以在SQL Server 2005/2008,Oracle 10和Sybase上运行.
我正在编写一个脚本来试图找出给定存储过程修改(但不丢弃)的表,例如insert,update和delete.
在delete一个竟然是令人费解的-有时我看到这样的语句:
delete phone_book where ...
Run Code Online (Sandbox Code Playgroud)
而不是:
delete from phone_book where ...
Run Code Online (Sandbox Code Playgroud)
那么...... from在这种情况下,关键字真的是可选的吗?这会导致任何问题吗?这只是一种糟糕的风格,还是无所谓?
我还没有找到一个参考T-SQL,这将使from可选.我想这可以统一我上面提到的所有3个供应商.
欢迎提出问题/意见/链接(或者是否欢迎?).
Luc*_*ero 10
在这个地方FROM是可选的(SQL Server,Oracle,Sybase).
但是,存在细微差别:例如,Oracle允许为表名指定别名,而SQL Server则不允许; 和其他事情也有点不同.
另请注意,您的FROM样本与强制要求的以下内容不同:
DELETE phone_book FROM some_table WHERE ...
Run Code Online (Sandbox Code Playgroud)
简答:Luceros的答案是正确的:它是选择性的
我必须维护sql并在sql-server和Oracle之间进行调整.这里有一些规则:
ORACLE Select语句需要来自DUAL的Clause