DELETE A.*, B.cID, A.capacity
FROM A LEFT JOIN B ON A.cID = B.cID
WHERE (((B.cID) Is Null) AND ((A.capacity)="r"));
可悲的是,这是我正在研究的项目,我正在尝试将其转换为SQL以在sql server上运行。
唯一的问题是,我不知道删除Table.Column做什么..它在sql server中不起作用 删除语句中包含B.cID和A.Capacity的内容是什么?
答案 0 :(得分:1)
我认为会删除A中的行
如果我是对的,我认为这个陈述是等同的。
delete from a
where a.cid not in (select cid from B)
and a.capacity = 'r';
虽然左边连接的语句最初可读性较差,但它通常表现得更好。对于SQL Server,您也可以测试此查询。
delete from a
left join b on a.cid = b.cid
where b.cid is null
and a.capacity = 'r';
确保两个查询具有相同的结果,然后查看每个版本的执行计划,以查看哪个更好,以及为什么。
DELETE语句删除行。它们不会从列中删除值,同时保留行不完整。 (我很确定这会让你对原始语法感到困惑。)