如何获取其他表中不存在的值[重复]
Posted
技术标签:
【中文标题】如何获取其他表中不存在的值[重复]【英文标题】: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 不对应。这是故意的吗? 【参考方案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。你可以检查一下。祝你好运!
【讨论】:
以上是关于如何获取其他表中不存在的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章