2017-02-26 13 views
0

私は結合したいテーブルを2つ持っています。結合されたテーブルから知りたいのは、結合条件に一致する終了行があるかどうかです。私はすべての行を結合されたテーブルを返すしたくないです。結合された行をすべて返さずに2つのMySQLテーブルを結合する方法

例:

Table A 
ID Name 
1 Bob 
2 Sally 
3 Joe 

Table B 
Num ID Data 
1 1 anything 
2 1 some more 
3 3 thats it 
私はそれがテーブルAからのすべての行を返すようにしたいどのような

が、私は知っている気にすべてのテーブルBに一致するIDは、私がすべて一致する行を返すようにしたくないがあるかどうかであります。私は(それが現在ん)出力は次のようになりたくない

ID Name Has Data 
1 Bob Yes 
2 Sally No 
3 Joe Yes 

:ここ
ID Name Has Data 
1 Bob Yes 
1 Bob Yes 
2 Sally No 
3 Joe Yes 

が私のクエリさ

は、だから私の出力は次のようになります

SELECT a.ID, Name 
    FROM table_a AS a 
    LEFT JOIN (SELECT DISTINCT b.ID FROM table_b) AS b ON b.ID = a.ID 

このエラーメッセージが表示されます。 「フィールドリスト」に「b.ID」という列がありません

+0

は、サブクエリ – Jhecht

+0

おかげ@Jhechtでtable_b'からDISTINCT table_b.IDをSELECT '使用してみてくださいそれは、私はそれ@McNetsみました –

答えて

1
SELECT a.ID, Name 
CASE WHEN b.ID IS NULL THEN 'No' ELSE 'Yes' END as [Has data] 
FROM table_a AS a 
LEFT JOIN table_b ON b.ID = a.ID 
GROUP BY a.Id, Name 

SELECT a.ID, Name 
CASE WHEN EXISTS (SELECT 1 
        FROM table_b b 
        WHERE b.ID = a.Id) THEN 'Yes' 
    ELSE 'No' END as [Has data] 
FROM table_a AS a 

LEFT JOINが行を戻さない場合、b.IDはNULLになります。次に、CASE文を使用して値に応じて「はい」または「いいえ」を返します。

+0

を動作しませんでしたが、私はまだtable_b –

+0

エクセレントから両方の行を取得します。 'GROUP BY'はそれを@McNetsにしました。ありがとうございました –

関連する問題