簡體   English   中英

插入除SQL Server中的記錄

[英]insert records except in sql server

我有兩個表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記錄。 “ except”關鍵字不起作用嗎?

我該如何實現?

您可以執行聯接以從表中獲取唯一數據。

像表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 * 
FROM T1
WHERE NOT EXISTS(SELECT id,second_telphon FROM t2)

如果ID是唯一值,請嘗試以下操作:

SELECT * 
FROM T1
WHERE ID NOT IN(SELECT ID FROM t2)

您可以嘗試合並,然后再進行聚合,以限制第一張表中未與第二張表重復的記錄:

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對的記錄在聯合之后僅具有一個記錄計數,則表明該記錄對於第一個表是唯一的。

只是做左加入

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM