我真的很不愿意发布这个,因为我觉得这是一个常见问题,但我似乎找不到适用于这种情况的答案......(也许我只是一个非常糟糕的谷歌者)。
我有两个相同的表(按列排列,而不是数据),table1 和 table2。我希望删除 table1 中两个表中都存在复合键 (col1, col2) 的记录。这是我所拥有的,这对我来说似乎是正确的,但抛出了错误。
DELETE FROM Table1
WHERE (**Col1**, Col2) IN
(SELECT Col1, Col2
FROM Table1 a
JOIN Table2 b
ON a.Col1 = b.Col1
AND a.Col2 = b.Col2)
错误:
Msg 4145, Level 15, State 1, Line 212 An expression of non-boolean type specified in a context where a condition is expected, near ','.
我在具有“红色错误曲线”的代码部分周围放置了两个 *
。
最佳答案
这可以通过使用 JOIN
与您的 DELETE
干净地执行。 :
DELETE a
FROM
Table1 a
JOIN Table2 b
ON a.Col1 = b.Col1
AND a.Col2 = b.Col2
关于sql - 根据另一个表的组合键删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463982/