我在SQL Server中不断遇到这种DELETE FROM FROM
语法,并且不得不提醒自己它是做什么的。
DELETE FROM tbl
FROM #tbl
INNER JOIN tbl ON fk = pk AND DATEDIFF(day, #tbl.date, tbl.Date) = 0
编辑:为了使大多数评论和建议答案有意义,原始问题具有以下查询:
DELETE FROM tbl
FROM tbl2
发布于 2019-06-05 09:21:15
据我所知,您将使用这样的结构,即根据from查询的结果限制从第一个表中删除哪些行。但要做到这一点,你需要在这两者之间建立一个相关性。
在您的示例中没有关联,这实际上是一种交叉连接类型,这意味着“对于tbl2中的每一行,删除tbl1中的每一行”。换句话说,它将删除第一个表中的每一行。
下面是一个示例:
declare @t1 table(A int, B int)
insert @t1 values (15, 9)
,(30, 10)
,(60, 11)
,(70, 12)
,(80, 13)
,(90, 15)
declare @t2 table(A int, B int)
insert @t2 values (15, 9)
,(30, 10)
,(60, 11)
delete from @t1 from @t2
结果是一个空的@t1。
另一方面,这将只删除匹配的行:
delete from @t1 from @t2 t2 join @t1 t1 on t1.A=t2.A
https://stackoverflow.com/questions/56453021
复制相似问题