Sql server 在sql server中插入记录除外
我有两张桌子t1和t2。 t1有10k记录,t2有2k记录。t2的2k记录出现在t1中。 我想要的是来自t1的8k不同记录,而t2中不存在这些记录 我的做法如下:Sql server 在sql server中插入记录除外,sql-server,sql-server-2008,sql-server-2016,Sql Server,Sql Server 2008,Sql Server 2016,我有两张桌子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 然而,我仍然保持着所有的10公里记录。“除外”关键字不起作用吗 我如何才能做到这一点?试试这个: SELECT * FROM T1 WHERE NOT EXISTS(SELECT
select id, second_telphon from t1
except
select id, second_telphon from t2
然而,我仍然保持着所有的10公里记录。“除外”关键字不起作用吗
我如何才能做到这一点?试试这个:
SELECT *
FROM T1
WHERE NOT EXISTS(SELECT id,second_telphon FROM t2)
如果ID是唯一值,请尝试以下操作:
SELECT *
FROM T1
WHERE ID NOT IN(SELECT ID FROM t2)
可以执行联接以从表中获取唯一数据 与表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
您可以尝试联合,然后进行聚合,以限制第一个表中未被第二个表复制的记录:
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\u telphon
对的记录在并集后只有一个记录计数,则表示此记录对于第一个表是唯一的。只需执行左联接即可
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
表中是否有唯一的列可以识别它们是重复的还是NoteExcept有效,但如果没有看到表定义(包括排序规则),则无法猜测为什么它不适用于您。