【问题标题】:Checking If data from A column exists in B column检查A列中的数据是否存在于B列中
【发布时间】:2015-02-07 18:01:09
【问题描述】:

基本上这就是我所拥有的:

insert into A values(1689, 1709);
insert into A values(1709, 1689);
insert into A values(1782, 1709);
insert into A values(1911, 1247);
insert into A values(1247, 1468);
insert into A values(1641, 1468);
insert into A values(1316, 1304);
insert into A values(1501, 1934);
insert into A values(1934, 1501);
insert into A values(1025, 1101);

如您所见,这里有 2 个值可供使用。我们称它们为 a 和 b (a,b)。

我需要创建一个条件为 b 不能存在于 column1 中的查询。

我对此有点陌生,所以在我尝试的许多事情中,这看起来是最接近的答案,但它并没有起到作用。

SELECT 
    a.*
FROM 
    A as a
LEFT JOIN 
    B AS b ON b.column = a.column
WHERE 
    B.column IS NULL

【问题讨论】:

  • 两个值是否存储在同一个表中?
  • 是的,你可以从将数据插入到表中。这两个值都在表 A 中
  • 您使用哪种数据库系统?
  • SQL 服务器管理工​​作室 2012

标签: sql sql-server join exists


【解决方案1】:

假设我理解您的问题,一种选择是使用NOT EXISTS

select col2
from A A1
where not exists (
  select 1
  from A A2
  where A1.col2 = A2.col1
)

这将返回 col1 中不存在的所有 col2 记录。

【讨论】:

  • 就是这样! Tnx 很多!
【解决方案2】:
SELECT COL1, COL2 FROM A WHERE
COL1 NOT IN (SELECT DISTINCT COL2 FROM A)

【讨论】:

    【解决方案3】:

    您的原始查询有正确的想法,只是名称与您的描述不符。

    select  a1.*
    from    A a1
    left join A a2
        on  a2.b = a1.a
    where a2.b is null;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2013-04-03
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      相关资源
      最近更新 更多