MySQL选择是否属于id的所有值都存在于另一个表中

时间:2016-12-01 16:45:35

标签: mysql sql select join

基本上我有两张桌子:

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。我认为答案取决于我使用的联接类型,但我真的无法绕过那些

1 个答案:

答案 0 :(得分: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