【问题标题】:tSQL NOT IN QuerytSQL NOT IN 查询
【发布时间】:2013-05-23 00:58:07
【问题描述】:

我想获取 [interactions] 表的 ID,但这些 ID 不能等于 [EmailOUT] 表。我无法编写查询。

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 表中。我想删除它们。 Outbound Email 数量约为 300,但此查询结果应少于 300

【问题讨论】:

  • 您的外键和主键的名称是否与上述完全一致? Interactions.ID 与 EmailOut.ID?

标签: sql sql-server tsql notin


【解决方案1】:

如果您想获取 [interactions] 表的 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)

【讨论】:

  • .. 你也可以使用 NOT IN 而不选择,就像这个例子片段,你检查整数:not in (119, 138, 158, 165) 只是提到一种方法来测试运算符
【解决方案2】:

试试这个 -

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
        ) 

【讨论】:

    【解决方案3】:

    怎么样

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2014-03-03
      • 1970-01-01
      • 2012-01-17
      • 2014-08-02
      • 1970-01-01
      相关资源
      最近更新 更多