我有两张桌子。
表一:
ID COLOR
1 white
2 red
3 black
4 blue
5 yellow
表二:
ID COLOR
1 white
2 white
3 red
4 black
输出应为:
1 white
2 red
3 black
(排除第二个表中不存在的2个值 - 蓝色和黄色+排除第二个白色。)
我尝试了不同的JOIN和EXIST查询,没有运气。感谢。
答案 0 :(得分:14)
where exists
适用于此。
select *
from t1
where exists
(select 1
from t2 where color = t1.color);
子查询是一个相关子查询(因为它引用了另一个查询的值),因此它对外部查询的每一行都执行。所以内部查询需要做的就是检查并查看外部查询(和第一个表)中的颜色是否存在于第二个表中。
答案 1 :(得分:2)
SELECT DISTINCT t1.* FROM t1
INNER JOIN t2 ON t1.color = t2.color;
另一种与@pala _
相同的方法