我正在将Access转换为SQL,我对此删除声明感到困惑,因为我不确定它究竟是做什么的。
DELETE TableA.cID, TableB.*
FROM TableA RIGHT JOIN TableB ON TableA.cID = TableB.CID2
WHERE (((TableA.cID) Is Null));
我猜它是这样的:
Delete
from TableA right join TableB ON TableA.cID = TableB.CID2
Where TableA.cID is null
我不确定它是否应该从1个表中删除或2或..
答案 0 :(得分:0)
你想:
Delete TableB
from TableA right join TableB ON TableA.cID = TableB.CID2
Where TableA.cID is null
就个人而言,我总是避免使用右连接,因为可以通过切换表的顺序来说明相同的事情。我会重写这样的声明:
DELETE B
FROM TableB AS B LEFT JOIN TableA AS A ON B.CID2 = A.cID
WHERE A.cID IS NULL
有关详细信息,请参阅T-SQL: Selecting rows to delete via joins。
至于该查询实际上在做什么,这里有一个简短的描述:
删除TableB中TableA中没有匹配记录的所有行(
TableA.cID IS NULL
)条件TableB.CID2 = TableA.cID