2013-05-28 190 views
7

我想獲取[interact]表的ID,但這些ID不能等於[EmailOUT]表。我無法寫出查詢。tSQL NOT IN查詢

Select ID from EmailOut   
where ID NOT IN   
    (select ID from 
    [172.28.101.120].[GenesysIS].dbo.interactions 
    where media_type = 'email' 
    and type = 'Outbound') 

與此類似的東西。我想在交互表中輸出電子郵件,但這些電子郵件可能存在於EmailOut表中。我想刪除它們。出站電子郵件數約爲300,但這個查詢結果應該小於300

+0

是你的外國和主鍵恰好命名爲提及? Interactions.ID與EmailOut.ID? – madC

回答

14

看來你應該反向查詢,如果你想獲得[互動]表中的ID:

select ID from 
[172.28.101.120].[GenesysIS].dbo.interactions 
where media_type = 'email' 
and type = 'Outbound' 
AND ID NOT IN (SELECT ID FROM EmailOut) 
+0

是的,這是我想要的。謝謝。它返回157行。 – cihata87

+0

..你也可以在沒有選擇的情況下使用NOT IN,就像這個例子在你檢查整數時的snip:不在(119,138,158,165)只是提一個方法來測試運算符 – netfed

-1

什麼

select ID from [172.28.101.120].[GenesysIS].dbo.interactions 
where media_type = 'email' 
and type = 'Outbound' 
minus 
select ID from EmailOut 
+0

什麼是減號?它會在'minus'錯誤附近給出錯誤的語法 – cihata87

1

嘗試這一個 -

SELECT t2.* 
FROM [172.28.101.120].[GenesysIS].dbo.interactions t2 
WHERE t2.media_type = 'email' 
    AND t2.[type] = 'Outbound' 
    AND NOT EXISTS (
      SELECT 1 
      FROM dbo.EmailOut t 
      WHERE t.id = t2.id 
     ) 
+0

不,它不能解決 – cihata87

+0

請嘗試更新的答案。 – Devart