gpt4 book ai didi

sql - SQL中的DELETE和DELETE FROM之间的区别?

转载 作者:行者123 更新时间:2023-12-04 00:19:24 24 4
gpt4 key购买 nike

有一个吗?我正在研究一些存储过程,并且在一个地方找到以下行:

DELETE BI_Appointments
WHERE VisitType != (
SELECT TOP 1 CheckupType
FROM BI_Settings
WHERE DoctorName = @DoctorName)


这样做是否与以下操作相同:

DELETE FROM BI_Appointments
WHERE VisitType != (
SELECT TOP 1 CheckupType
FROM BI_Settings
WHERE DoctorName = @DoctorName)


还是语法错误,还是完全不同?

最佳答案

假设这是T-SQL或MS SQL Server,则没有区别,并且语句相同。第一个FROM关键字在DELETE语句中在语法上是可选的。

http://technet.microsoft.com/en-us/library/ms189835.aspx

关键字是可选的,原因有两个。

首先,该标准在子句中要求使用FROM关键字,因此必须遵守该标准。

其次,尽管关键字是多余的,但这可能不是为什么它是可选的。我相信这是因为SQL Server允许您在JOIN语句中指定DELETE,并且将第一个FROM强制设置为尴尬。

例如,这是一个普通的删除操作:

DELETE FROM Employee WHERE ID = @value


可以简化为:

DELETE Employee WHERE ID = @value


SQL Server允许您基于另一个表使用 JOIN进行删除:

DELETE Employee
FROM Employee
JOIN Site
ON Employee.SiteID = Site.ID
WHERE Site.Status = 'Closed'


如果第一个 FROM关键字不是可选的,则上面的第二个查询将需要如下所示:

DELETE FROM Employee
FROM Employee
JOIN Site
ON Employee.SiteID = Site.ID
WHERE Site.Status = 'Closed'


上面的查询完全有效并且可以执行,但这是一个非常尴尬的查询。很难说这是一个查询。似乎由于“重复”的 FROM子句,两个混在一起了。

旁注:由于没有 ORDER BY子句,因此示例子查询可能具有不确定性。

关于sql - SQL中的DELETE和DELETE FROM之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com