我真的不愿意发布,因为我觉得这是一个常见的问题,但我似乎找不到适用于这种情况的答案…(也许我只是一个非常糟糕的Google员工).
我有两个相同的表(列,而不是数据),table1和table2.我想删除表2中的两个表中存在复合键(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 ‘,’.
我已经把两个*的代码部分放在了’Red error squiggles’上.
解决方法
这可以使用JOIN与您的
DELETE
干净地执行:
DELETE a FROM Table1 a JOIN Table2 b ON a.Col1 = b.Col1 AND a.Col2 = b.Col2