MYSQL - 从SQL中的一个表中删除数字(如果它存在于另一个表

时间:2017-07-05 18:40:02

标签: mysql

如果SQL表中的数据与另一个表中的数据匹配,我需要一些帮助。

有两个表

Table 1: DNC
Table 2: Call_Logs

表1只有一列名为phone_number。 表2有多列,但主要的列也称为phone_number

基本上,我想从表1中删除表2中的任何数字(如果存在)。现在,我不想删除表1中的每个数字(如果它们存在于表2中)。我从表2中收集的数字基于某些标准。

要从表2中提取我需要从表1中删除的数据,我使用以下内容:

select phone_number from call_logs where call_date < 'DATE' and Status = 'DNC'

此查询将为我提供我希望从表1中删除的所有电话号码的列表(如果存在)。

实施例: https://drive.google.com/file/d/0B4NE4ZDXd6steW5odWhBMDJSY1U/view

我不确定如何在SQL中运行查询。任何类型的人都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

在img

中查看您的样本

您可以在表2上使用左连接(其中table2.phone_number为空别名,不匹配)

delete from table1
left join table2 on table1.phone_number = table2.phone_number
where table2.phone_number is null

答案 1 :(得分:0)

相关子查询w / an存在,因此可以提前退出

子查询中的select 1是因为我们必须选择一个值,但它与什么值无关。因为着色(DNC.Phone_Number = CL.Phone_Number)是我们所追求的;以及你对call_log的限制。

DELETE 
FROM DNC
WHERE exists (SELECT 1 
              FROM Call_logs CL
              WHERE CL.call_date < 'DATE' 
                and CL.Status = 'DNC' 
                and DNC.Phone_Number = CL.Phone_Number)