删除已在另一个表中的行

时间:2014-08-22 02:05:30

标签: mysql

我有2个mySQL表。它们都是个人信息列表(姓名,电话号码,电子邮件等)。

尽管字段名称相似,但它们并不相同。

我需要从第一个表中删除包含第二个表中的电话号码的行。

这是否可能,有人能指出我正确的方向吗?

提前致谢。

3 个答案:

答案 0 :(得分:5)

delete t1
from first_table t1
join second_table t2 on t1.phone = t2.phone 

答案 1 :(得分:3)

试试这个:

DELETE FROM `table1` WHERE `phonenumber` IN (SELECT `phonenumber` FROM `table2`)

答案 2 :(得分:1)

首先,编写一个标识要删除的行集的查询。例如:

SELECT o.*
  FROM table_one o
  JOIN table_two t
    ON o.phone_number = t.phone_number 

确认这是您要删除的行集。 (如果要存储要删除的行的备份副本,这也很方便。如果table_two中有多行具有相同的电话号码,则可以使用table_one的主键添加GROUP BY子句,或者是DISTINCT关键字等)

通过将SELECT关键字和选择列表替换为DELETE o.*(如果它是要删除的table_one中的行),将SELECT语句转换为DELETE语句。