2016-12-01 77 views
2

基本上我有两个表:MySQL的选择是否属于ID的所有值出现在另一个表

rid|element  id|element 
1 | x  1 | a  
1 | y  2 | b  
1 | z  3 | c 
1 | a  4 | d 
2 | b  5 | e 
2 | c  6 | x 
2 | d  7 | z 
3 | e   
3 | z 
3 | x 

,我想回到rid = 2, 3但不1因为元素y不存在第二个表。我认为答案在于我使用的加入类型,但我还没有真正能够围绕这些

+0

可能重复[MySQL LEFT JOIN 3 tables](http://stackoverflow.com/questions/16222097/mysql-left-join-3-tables) – CGritton

回答

2

我会与左加入第一个表到第二个,然后通过rid汇总检查第一个表中的每个element事实上都与第二个表中的element相匹配。

SELECT t1.rid 
FROM table1 t1 
LEFT JOIN table2 t2 
    ON t1.element = t2.element 
GROUP BY t1.rid 
HAVING SUM(CASE WHEN t2.element IS NULL THEN 1 ELSE 0 END) = 0 
相关问题