2015-09-07 66 views
1

問題: 我想檢索列表表b中不存在的值,但它存在於表a中。檢索主數據表中不存在的數據,僅存在於次數中

我不知道該怎麼做。

請記住,數據會經常更改。

SELECT [id] 
     ,[name] 
     ,[email] 
     ,[phone] 
     ,[cellphone] 
     ,[none] 
    FROM [test].[dbo].[datatable] 

SELECT [id] 
     ,[name] 
     ,[email] 
     ,[phone] 
     ,[cellphone] 
     ,[none] 
    FROM [test].[dbo].[datatable2] 

enter image description here

+0

您的預期結果是什麼? –

+0

您的數據很有趣,爲什麼它在NAME字段中重複產品名稱,成本和活動值。僅僅用於測試,虛擬數據嗎?或者這3行是否定義了有效的記錄? – Eralper

+0

只是虛擬數據 – KLN

回答

1

使用LEFT OUTER join在桌子上:
請看以下示例查詢:

select a.* 
from tableA a 
Left outer join TableB b 
on a.id=b.id 
where b.id is NULL 
0

如果你想看看是否整行的比賽,你可以使用EXCEPT來查找結果集。

SELECT [id], 
    [name], 
    [email], 
    [phone], 
    [cellphone], 
    [none] 
FROM [test].[dbo].[datatable] 
EXCEPT 
SELECT [id], 
    [name], 
    [email], 
    [phone], 
    [cellphone], 
    [none] 
FROM [test].[dbo].[datatable2] 

如果你只是擔心密鑰,我喜歡使用NOT EXISTS來獲得結果集。

SELECT [id], 
    [name], 
    [email], 
    [phone], 
    [cellphone], 
    [none] 
FROM [test].[dbo].[datatable] t1 
WHERE NOT EXISTS (SELECT 1 FROM [test].[dbo].[datatable2] t2 WHERE t2.[id] = t1.[id]) 
相關問題