[MySQL] UNIONとJOINを組み合わせて使う
スポンサーリンク
SQL文でUNIONとJOINを組み合わせて使う場合の覚え書きです。
必要あって書いたのはこんなSQLです。
SELECT * FROM main_table AS m INNER JOIN ( SELECT foo_table.id, foo_table.name FROM foo_table LEFT OUTER JOIN foo_meta_table ON foo_table.id = foo_meta_table.id UNION ALL SELECT bar_table.id, bar_table.name FROM bar_table LEFT OUTER JOIN bar_meta_table ON bar_table.id = bar_meta_table.id ) AS u ON m.id = u.id WHERE m.title = 'hoge'
INNER JOINで結合する対象のテーブルをUNION ALLで結合してテーブル”u”(AS u)として扱っています。そのUNION ALLで結合した2つのテーブルはLEFT OUTER JOINで結合を行っています。合計4つのテーブルを1つのテーブルとしてメインのテーブルにマージしているわけですね。
気をつけるのはUNIONで結合する際、SELECT句に指定するカラムのデータ型とカラム数が一致するようにすることでしょうか。
スポンサーリンク
MySQLカテゴリーの投稿
- [MySQL] 数値を範囲で区切って集計
- [MySQL] UPDATEで時間を加算・減算する
- [MySQL] datetime型カラムを時間単位で集計する
- [MySQL] カラム内の指定した文字列を置換する
- PHP、MySQL、CRONが使える無料レンタルサーバー「000.webhost.com」
- [MySQL] 日時のデータをもとに日別のデータを集計する
- [MySQL] カラム内の文字列の一部を一括置換する
- [MySQL][php] updateしたIDを知りたい場合はLAST_INSERT_ID()を使う
- MySQLバージョン4.x以前からエクスポートしたsqlファイルはTYPE = MyISAM を ENGINE = MyISAM に変更する
- さくらインターネットのMySQLを4.0.6から5.1にアップグレード