我有两个表t1和t2。 t1有10k记录,t2有2k记录。 t2的2k记录存在于t1中。 我想要来自t1的8k不同记录,这在t2中不存在。
我按照以下方式执行此操作:
select id, second_telphon from t1
except
select id, second_telphon from t2
但是,我仍然获得所有10k记录。是"除了"关键字不起作用?
我怎样才能做到这一点?
答案 0 :(得分:1)
您可以执行加入以从表中获取唯一数据。
像表t1&表格一样t2你可以执行左或右连接。示例:
SELECT T1.*
FROM T1
WHERE NOT EXISTS(SELECT NULL
FROM T2
WHERE T1.ID = T2.ID
AND T1.Date = T2.Date
AND T1.Hour = T2.Hour)
OR .
SELECT T1.*
FROM T1
LEFT JOIN T2
ON T1.ID = T2.ID
AND T1.Date = T2.Date
AND T1.Hour = T2.Hour
WHERE T2.ID IS NULL
答案 1 :(得分:0)
试试这个:
volatile
如果ID是唯一值,请同时尝试:
SELECT *
FROM T1
WHERE NOT EXISTS(SELECT id,second_telphon FROM t2)
答案 2 :(得分:0)
您可以尝试使用union,然后使用聚合来限制第一个表中那些未被第二个表复制的记录:
SELECT id, second_telphon
FROM
(
SELECT id, second_telphon FROM t1
UNION ALL
SELECT id, second_telphon FROM t2
) t
GROUP BY id, second_telphon
HAVING COUNT(*) = 1;
如果记录(被定义为id
,second_telphon
对在联合后只有一个记录计数,则表示该记录对于第一个表是唯一的。
答案 3 :(得分:0)
只做左连接
select t1.id,t1.second_telphon from t1
left join t2 on
t1.id = t2.id
and t1.second_telphon =t2.second_telphon
where t2.id is null