我正在尝试选择由两列中的值标识的表中的行。值可在另一个表中找到。一个例子应该有所帮助:
表1
A | B | C
101 1 x
102 1 o
103 1 o
SELECT A, B FROM Table1 where Table1.C = 'o'
返回:
A | B
102 1
103 1
我想删除Table2中的行,其中A和B与Table1上的查询返回的行匹配。
表2
A | B | D
101 1 Not deleted
102 1 Deleted
103 1 Deleted
变为:
A | B | D
101 1 Not selected
第一个选择有效,但我看不到从哪里去。我目前有以下内容,但这是一个错误,我不清楚我应该做什么。教程很受欢迎,因为我是SQL的新手。
DELETE Table2
where A, B in
(SELECT A, B FROM Table1
where Table1.C = 'o')
答案 0 :(得分:1)
在查询中使用where
子句时,IN
部分中不能指定多于1个字段。相反,你可以这样做:
delete t from
table2 t
inner join table1 s on t.a = s.a and t.b = s.b
where s.c = 'o'