此请求有效:
有两个连续的 FROM。 当我删除第一个时,它不起作用,为什么?
DELETE FROM TableA
FROM TableA dim
LEFT OUTER JOIN (
SELECT DISTINCT ColA
FROM TableB
UNION ALL
SELECT DISTINCT ColA
FROM tableC
) A ON A.ColA= dim.ColA
WHERE A.ColA IS NULL
编辑 这个不起作用,我认为是正确的:
DELETE
FROM TableA dim
LEFT OUTER JOIN (
SELECT DISTINCT ColA
FROM TableB
UNION ALL
SELECT DISTINCT ColA
FROM tableC
) A ON A.ColA= dim.ColA
WHERE A.ColA IS NULL
谢谢
最佳答案
这是因为表连接的原因。 SQL 引擎需要知道要从哪个源删除,而奇怪的 FROM FROM
语法可以实现这一点。
您的语句在功能上与此等效,除了我用表别名替换第一个 FROM
子句之外,它完全相同:
DELETE dim
FROM TableA dim
LEFT OUTER JOIN (
SELECT DISTINCT ColA
FROM TableB
UNION ALL
SELECT DISTINCT ColA
FROM tableC
) A ON A.ColA= dim.ColA
WHERE A.ColA IS NULL
关于SQL DELETE 语句解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55265214/