加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 基于另一个表的复合键删除

发布时间:2020-12-12 08:25:18 所属栏目:MsSql教程 来源:网络整理
导读:我真的不愿意发布,因为我觉得这是一个常见的问题,但我似乎找不到适用于这种情况的答案…(也许我只是一个非常糟糕的Google员工). 我有两个相同的表(列,而不是数据),table1和table2.我想删除表2中的两个表中存在复合键(col1,col2)的记录.这是我所拥有的,这对我
我真的不愿意发布,因为我觉得这是一个常见的问题,但我似乎找不到适用于这种情况的答案…(也许我只是一个非常糟糕的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读