根据另一个表从表中删除记录

时间:2015-10-28 16:41:51

标签: mysql sql sql-delete

我在MYSQL中有两个表看起来像这样:

表A:

id1  |  id2  |  id3  |  id4  |
 1   |   15  |   26  |   12  |
 2   |   27  |   12  |   15  |
 1   |   4   |   82  |   18  |
 4   |   11  |   37  |   22  |
 1   |   21  |   31  |   24  |

表b:

id1  |  id2  |
 2   |   27  | 
 1   |   21  |

我想删除表A中与表B中的字段部分匹配的行(意味着从表A中删除第2行和第5行)。

有没有人有想法? 谢谢:)

2 个答案:

答案 0 :(得分:1)

使用ExistsJoin语法删除匹配的记录。试试这个

delete 
from TableA
where exists 
(
select 1 
from TableB B 
where TableA.id1 = B.id1 and TableA.id2 = B.id2
)

答案 1 :(得分:0)

您可以使用多表删除语法:

delete TableA.* 
from TableA
inner join TableB on TableB.id1 = TableA.id1 and TableB.id2 = TableA.id2;