0

我正在将 Access 转换为 SQL,我被这个 Delete 语句卡住了,因为我不确定它到底做了什么。

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 个表中删除或..

4

1 回答 1

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:通过连接选择要删除的行


至于那个查询实际上在做什么,这里有一个简短的描述:

删除 TableB 中所有TableA.cID IS NULL条件的 TableA ( )中不存在匹配记录的行TableB.CID2 = TableA.cID

于 2013-08-29T12:27:23.293 回答