• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQL SELECTの指定について)

MySQL SELECTの指定について

このQ&Aのポイント
  • MySQL SELECT文で重複した値を表示する方法について質問です。
  • 複数のテーブルから重複した値を取得するためには、JOINを使用します。
  • 質問者のテーブルの場合、hoge.idとtest.idが重複した場合にtest.nameを表示したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

OUTER JOIN して COALESCE で選択する方法も有りますね。 ただし、MySQLでは FULL OUTER JOIN が使えないので、LEFT OUTER JOIN と RIGHT OUTER JOIN を UNION する必要が有りますが。 SELECT id, COALESCE(test.name, hoge.name) AS name FROM hoge LEFT OUTER JOIN test USING(id) UNION SELECT id, COALESCE(test.name, hoge.name) AS name FROM hoge RIGHT OUTER JOIN test USING(id); もし、test の中の id が全て hoge にも有るのでしたら、↓だけでも良いです。 SELECT id, COALESCE(test.name, hoge.name) AS name FROM hoge LEFT OUTER JOIN test USING(id); http://dev.mysql.com/doc/refman/5.1/ja/join.html http://dev.mysql.com/doc/refman/5.1/ja/comparison-operators.html#function_coalesce

sosuno20
質問者

お礼

ありがとうございます。 大変参考になりました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

単純にunionでidの一覧をつくって それぞれをleft joinすればいいような気がしますが select t1.id,coalesce(t3.name,t2.name) as name from (SELECT id FROM hoge UNION SELECT id FROM test) as t1 left join hoge as t2 on t1.id=t2.id left join test as t3 on t1.id=t3.id

sosuno20
質問者

お礼

返事が遅れてすみませんでした。 大変参考になりました。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

select id ,name from hoge where id not in (select id from test) union select id,name from test order by 1

sosuno20
質問者

お礼

返事が遅れてすみませんでした。 大変参考になりました。

関連するQ&A