【问题标题】:How to get values which are not present in other table [duplicate]如何获取其他表中不存在的值[重复]
【发布时间】:2018-03-19 09:52:57
【问题描述】:

我有下面提到的表格:

表_1

ID     Var1   Var2
1      123    10
2      456    12
3      789    11
4      112    14

表_2

ID     Value2   Freq
1      123      5
2      555      4
3      779      7
4      112      8

我想要Table_2 中不存在的Var1

输出:

ID     Var1   Var2
1      456    12
4      789    11

我试过这个:

select *
from Table_1 t1
left join Table_2 t2 on t1.Var1 = t2.Value2
where t1.Var1 not in t2.Value2

【问题讨论】:

  • table2中也有table1的值123,你还想要吗?
  • 但是在你的输出中你只需要呈现值。你确定问题是正确的吗?
  • 你的问题不清楚..你的数据样本不连贯
  • 谢谢...我已经改变了问题。
  • 您输出中的 ID 似乎与 Table_1 或 Table_2 中的 ID 不对应。这是故意的吗?

标签: mysql sql


【解决方案1】:
select * from Table_1
where Var1 not in (select Value2 from Table_2)

select ID, Var1, Var2
from Table_1 t1
left join Table_2 t2 on t1.Var1 = t2.Value2
where t1.Var1 is null

第二种方式可能更有效。

【讨论】:

  • LEFT JOIN 查询将返回空白,因为您是从 T1 中选择的,所以它应该是 WHERE t2.ID IS NULL sqlfiddle.com/#!9/6ca7c0/1
  • ...或者可能是第一种方式,
【解决方案2】:

您可以使用以下内容:

SELECT * FROM Table_1 WHERE NOT Var1 IN (SELECT Value2 FROM Table_2)

【讨论】:

    【解决方案3】:

    您可以使用以下内容:

    select * from Table_1  t1
    left join Table_2  t2 on t1.var1=t2.var2
    where t2.var2 is not null
    

    【讨论】:

      【解决方案4】:

      试试这个:

      SELECT A.*
      FROM table_1 A
      WHERE NOT EXISTS (SELECT NULL
                       FROM table_2 B
                       WHERE A.Var1=B.Var1);
      

      run on SQL Fiddle

      【讨论】:

        【解决方案5】:

        以下代码将为您提供预期的输出。

        SELECT ID, Var1, Var2 
        FROM Table_1 
        WHERE  Var1 NOT IN (SELECT Value2 FROM Table_2);
        

        NOT IN 运算符用于检索在表或引用表中没有条目的列。 我已经附上了我的SQLFiddle。你可以检查一下。祝你好运!

        【讨论】:

          猜你喜欢
          • 2019-05-23
          • 1970-01-01
          • 2013-10-07
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 2012-09-20
          • 1970-01-01
          • 2021-08-14
          相关资源
          最近更新 更多