MySQLはかれこれ2年くらい使っていますが、意外に知らない機能がまだまだあるなと感じたので、最近使い方を知った以下の3つの機能についてまとめてみました。
- 同じMySQL上の別データベースにあるテーブルをJOIN
- 複数テーブル(3つ以上のテーブル)をJOIN
- 条件付きSUM、COUNT
同じMySQL上の別データベースにあるテーブルをJOIN
別のデータベース上にあるテーブル2つをJOINしたいと思い、どうやるのかなと調べてみたのですが、かなり簡単でした。
(ユーザーに両方のDBへのアクセス権限がないと、もちろんエラーが発生します。)
SELECT
*
FROM
database_a.table_a as a
LEFT JOIN
database_b.table_b as b
ON
a.id = b.id;
複数テーブル(3つ以上のテーブル)をJOIN
データ量が多いテーブルを複数に分けていて、それらのテーブルたちを一気にJOINする際に使いました。
こちらも直感的でわかりやすいと思います。
SELECT
u.*, a.*, b.*
FROM
users as u
LEFT JOIN
table_a as a
ON
u.id = a.id
LEFT JOIN
table_b as b
ON
u.id = b.id;
条件付きSUM、COUNT
普通MySQLのSUMなどで条件を設定する場合はWHERE句で書くことが多いですが、複数のSUMやCOUNTがあり、WHERE句では対応しきれない場合があります。
そんな場合はこちらの方法を使うとすっきりSQLを書くことができます。
# 100円以上の商品の合計金額を求める
SELECT
SUM(CASE WHEN price > 100 THEN price ELSE 0 END)
FROM
items;