【问题标题】:SQL Server - Get record where not exist on other tableSQL Server - 获取其他表上不存在的记录
【发布时间】:2022-01-22 05:48:30
【问题描述】:

我有两张桌子:

我想在 Campaign 表中获得结果 -> 55,100

因为它们不存在于Jobs 表中。

【问题讨论】:

  • 哪个DBMS,到目前为止你尝试了什么,你卡在哪里了?
  • 我为此做了一个fiddle,并在他们测试时给出了第一个答案。享受吧!

标签: sql-server select


【解决方案1】:

您可以使用not exists 条件:

SELECT *
FROM   campaign c
WHERE  NOT EXISTS (SELECT *
                   FROM   jobs j
                   WHERE  j.campaignid = c.campaignid)

【讨论】:

    【解决方案2】:

    你可以这样使用:

    select * from campaign
     where 1 = 1
       and campaignid is not null
       and campaignid not in (select campaignid from jobs)
    

    【讨论】:

      【解决方案3】:
      create table #Campaign (CampaignId int NULL)
      create table #Jobs (JobId int, CampaignId int)
      
      insert into #Campaign values (1),(2),(3),(4),(100),(55)
      insert into #Jobs values (1,1),(2,2),(3,3),(4,4),(5,1),(6,3),(7,3)
      
      select distinct C.CampaignId
      from #Campaign as C
      where not exists(select 1 from #Jobs as J where C.CampaignId = J.CampaignId)
      

      结果是 55 100

      【讨论】:

        【解决方案4】:

        或者您可以使用 id 为 null 的 LEFT OUTER JOIN:

        SELECT c.* from campaign c
        LEFT OUTER JOIN jobs j ON j.CampaignId = c.CampaignId
        WHERE j.CampaignId IS NULL;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 2019-07-05
          • 1970-01-01
          • 2018-07-13
          • 1970-01-01
          相关资源
          最近更新 更多