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

MYSQL-删除SQL中一个表中的数字(如果它存在于另一个表中),mysql,Mysql,如果一个SQL表中的数据与另一个表中的数据相匹配,我需要一些帮助来删除它 有两张桌子 Table 1: DNC Table 2: Call_Logs 表1只有一列名为phone_number。 表2有多个列,但最重要的一列也是phone_number 基本上,我想从表1中删除表2中的任何数字,如果它们存在的话。现在,我不想删除表1中的每个数字,如果它们存在于表2中。我从表2中收集的数字是基于一些标准的 为了从表2中提取需要从表1中删除的数据,我使用以下方法: select phone_numb

如果一个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中删除的所有电话号码(如果存在)

例如:


我不确定如何在SQL中运行查询。任何类型的都将不胜感激。

期待您的img样品

您可以在表2中使用一个左联接,其中table2.phone_number为null别名不匹配

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

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

子查询中的select 1是因为我们必须选择一个值,但它与值无关。因为着色DNC.Phone_Number=CL.Phone_Number是我们追求的全部;以及你在通话记录上的限制

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)