如果存在于另一个

时间:2015-05-11 00:37:51

标签: mysql

我有两张桌子。

表一:

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查询,没有运气。感谢。

2 个答案:

答案 0 :(得分:14)

where exists适用于此。

select * 
  from t1
  where exists 
    (select 1
      from t2 where color = t1.color);

demo here

子查询是一个相关子查询(因为它引用了另一个查询的值),因此它对外部查询的每一行都执行。所以内部查询需要做的就是检查并查看外部查询(和第一个表)中的颜色是否存在于第二个表中。

答案 1 :(得分:2)

SELECT DISTINCT t1.* FROM t1 
INNER JOIN t2 ON t1.color = t2.color;

另一种与@pala _

相同的方法