- ベストアンサー
テーブル結合方法について
MySQL5.1で、Table a ,Table b から、Table cのように取り出したいのですが、 SQLでSELECTする方法がわかりません。 Table b優先だけど、Table aにしかデータがない場合もあるといった感じです。 Table a No Name 1 加藤 2 佐藤 3 田中 Table b No Name 2 佐藤先輩 4 田辺先輩 Table c No Name 1 加藤 2 佐藤先輩 3 田中 4 田辺先輩 どうか、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょうか。 select b.no, b.name from b union all select a.no, a.name from a where not exists(select * from b where a.no = b.no) order by no; bの全件と、aのうちbに存在しないデータを取得します。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.2
こういうやり方でもよいかも select No,coalesce(b.Name,a.Name) as Name from a left join b using(No) union select No,coalesce(b.Name,a.Name) as Name from a right join b using(No)
質問者
お礼
今回は、データ量的に重くて厳しかったですが、 union前に、right joinなど発想できていなかったので為になりました。 又、join + coalesce()の手法も、いつか使う時がありそうです。 ありがとうございました。
お礼
union all高速ですね。 group by noで何とか目的が達成できました。 ありがとうございます。