2010-12-13 10 views

答えて

2

あなたは「1つのテーブルまたは他のテーブルではなく、両方のテーブルに存在する」と仮定して - あなたは、サブクエリを使用して、組合は選択します! MySQLはFULL OUTER JOINオペレータがあった場合

SELECT group_concat(x.name) FROM 
    (SELECT name FROM table_one 
     WHERE id NOT IN (SELECT id FROM table_two) 
    UNION SELECT name from table_two 
     WHERE id NOT IN (SELECT id FROM table_one)) as x; 
0

これは、単純な次のようになります:あなたが望んだ場合にも

SELECT name FROM table_one WHERE id NOT IN (SELECT id FROM table_two) 
UNION SELECT name from table_two WHERE id NOT IN (SELECT id FROM table_one); 

は、これらの結果は、単一の結果行にあなたのためにアップにグループ化するように1行を戻し参加します各テーブルのレコードごとに、レコードが両側に存在する場合はIDに結合され、存在しない場合はNULLが存在しない場合はNULLになります。 @ajrealが結合の両側に示唆している同じチェックを行うことができます。代わりに、あなたはUNIONはLEFTとRIGHTの結果は、JOINができ

...

SELECT table_one.name 
FROM table_one 
LEFT JOIN table_two ON table_one.id = table_two.id 
WHERE table_two.id IS NULL 
UNION 
SELECT table_two.name 
FROM table_one 
RIGHT JOIN table_two ON table_one.id = table_two.id 
WHERE table_one.id IS NULL 
+0

はい、組合はこれがdownvotedれた理由を説明するための平衡、誰のケアのための欲求とは別にキー – vicatcu

+0

のですか? –

関連する問題