Delete From CEF_RACK_BOX_ORDER From CEF_RACK_BOX_ORDER D [Where 语句]
在SQLServer 中这种写法并不会报错
不明白的是,为什么使用两个FROM,且是同一张表?
有dl解释一下吗?
Delete From CEF_RACK_BOX_ORDER From CEF_RACK_BOX_ORDER D [Where 语句]
在SQLServer 中这种写法并不会报错
不明白的是,为什么使用两个FROM,且是同一张表?
有dl解释一下吗?
引自免费微信小程序:皆我百晓生
在标准的SQL语法中,DELETE
语句并不需要也不支持使用两个FROM
关键字来指定同一张表。然而,在SQL Server中,尽管不推荐这种写法,但确实可以接受额外的表引用,这更多是由于SQL Server对非标准语法的某种程度上的容忍,并不会报错。
关于SQL Server中的“双FROM”现象
当您写出如下形式的DELETE
语句时:
DELETE From CEF_RACK_BOX_ORDER
From CEF_RACK_BOX_ORDER D
[Where 条件];
这里的第二个From
及其后的表名实际上是在为要删除的数据创建一个别名(这里别名为D
)。虽然它看起来冗余,但在某些情况下,可能是因为开发者想通过别名来明确指定表并且在WHERE
子句中使用这个别名以提高可读性或方便编写复杂的查询条件。
标准SQL DELETE语句格式:
在标准SQL中,通常会这样编写DELETE
语句:
DELETE FROM table_name
[WHERE condition];
例如,若要从CEF_RACK_BOX_ORDER
表中删除满足特定条件的记录,标准且清晰的做法应该是:
DELETE D
FROM CEF_RACK_BOX_ORDER AS D
WHERE [your_condition];
在这里,D
作为CEF_RACK_BOX_ORDER
的别名被用来在WHERE
子句中引用列。尽管SQL Server允许上述非标准的写法,但为了保持代码的可移植性和遵循最佳实践,建议始终采用标准的SQL语法书写DELETE
语句。