2016-12-01 12 views
2

は基本的に私は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 

を要素yが第二のテーブルに存在しないので、私はrid = 2, 3なく1を返すようにしたいです。答えは、私が使用する結合のタイプにあると思うが、私は本当にそれらの周りに私の頭を包み込むことができませんでした

+0

可能重複[MySQLのLEFT JOIN 3つのテーブル(http://stackoverflow.com/questions/16222097/mysql-left-join-3-tables) – CGritton

答えて

2

私は最初のテーブルを2番目に結合し、次にrid第1のテーブルからのelementはすべて、実際には第2のテーブルの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 
関連する問題