2013-05-28 167 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