[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にアップグレード