如果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中运行查询。任何类型的人都会受到赞赏。
答案 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)