Sql server 在sql server中插入记录除外

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

我有两张桌子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 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有效,但如果没有看到表定义(包括排序规则),则无法猜测为什么它不适用于您。