データ分析エンジニアのブログ

日常のことからプログラミングや機械学習まで@六本木

意外と知らないMySQLの機能まとめ・3選

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;