• ベストアンサー

テーブルの結合について

うまく動作しなくて、困っております。 MySQLを利用しており、その際のテーブルの結合で困っています。 table a +-+--+ |id|col| +-+--+ | 1|A| | 2|B| | 3|C| | 4|D| | 5|E| +-+--+ table b +-+--+ |id|col| +-+--+ | 2|G| | 5|G| | 6|G| +-+--+ 上記テーブルを結合し、下記のようにしたいのですが・・・。 +-+--+ |id|col| +-+--+ | 1|A| | 2|B| | 3|C| | 4|D| | 5|E| | 6|G| +-+--+ 参考書・Webから探してみましたが、 見つかりませんでした。 よろしくお願い致します。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

select * from a union select * from table b where not exists(select * from a where a.id = b.id )

moozoo
質問者

お礼

最新のバージョンでは、UNIONがサポート されているようですね。 私が利用しているバージョンでは、UNIONが使えません。 折をみて、バージョンアップしようと思います。 有難う御座いました。

その他の回答 (1)

  • R34_666
  • ベストアンサー率25% (17/66)
回答No.1

もう少し説明ください。 AとBを結合してCというテーブルを作るのか、 BのデータをAに入れてしまうのか、 結合して表示だけするのか。 テーブルを作成したり実データを結合するのでしたら 一度、元にしたい方を外部テキストにはき出して、 LOAD DATA INFILE '外部テキスト' REPLACE INTO TABLE `結合テーブル` と言う感じでやるとKEYが重複した場合上書きしてくれます。

moozoo
質問者

お礼

R34_666さんのものが参考となり、とりあえず解決しました。有難う御座いました。 各メーリングリスト、掲示板にて同じ質問されている方もいたので、 載せておきます。 結合用テーブルを作成しておきます。 # delete from c; 必要に応じて初期化 replace into c(id,col) select id,col from a; replace into c(id,col) select id,col from b; これで、目的のテーブルが作成出来ます。 状況によって、insert の方が良い時もあります。

moozoo
質問者

補足

早速のご回答有難う御座います。感謝しております。 結合して表示だけです。といいますか、 Where句にて、いろいろと抽出したいと思います。 R34_666さんに教えて頂いたものを試してみます。 作業頻度が高いので、やはりクエリー1発で表示 出来ればよいのですが。