サブクエリ、結合【SQL】
サブクエリ
SELECT user
FROM players
WHERE score > (
SELECT score
FROM players
WHERE user = "タケシ"
);
サブクエリとは、クエリの中に入っているクエリのことです。
実行順序は、「サブクエリ」→「クエリ」です。
AS
SELECT score AS "タケシの得点"
FROM players
WHERE user = "タケシ";
「カラム名 AS 名前」とすることで、カラム名などに別名を定義することができます。
JOIN
JOINは、複数のテーブルを1つに結合するときに使います。
ONで条件を指定します。
▼productsテーブル ▼usersテーブル
テーブル名を紐づけるために、外部キーと主キーを使います。
上の画像では、user_idテーブルが外部キー、usersテーブルが主キーです。
実行順序は、「FROM,JOIN,ON」→「SELECT」です。
SELECT products.name, users.name
FROM products
JOIN users
ON products.user_id = users.id;
複数テーブルに同じカラムが存在するときは「テーブル名.カラム名」で指定します。
SELECT *
FROM products
JOIN users
ON products.user_id = users.id;
WHERE products.name = "タケシ";
「テーブル名.カラム名」を用いたカラム指定はWHEREでも使えます。
LEFT JOIN
SELECT *
FROM products
LEFT JOIN users
ON products.user_id = users.id;
LEFT JOINは、FROMで指定したテーブルのレコードを全て取得します。
外部キーがNULLのレコードもそのまま実行結果に表示されます。
SELECT *
FROM products
JOIN users
ON products.user_id = users.id
LEFT JOIN teams
ON products.prefecture_id = teams;
JOINを複数回使用する場合でも、FROMは1回書くだけで問題ありません。
実行順序
▼全体の実行順序
- テーブルの指定(FROM)
- 結合(ON、JOIN)
- 取得条件(WHERE)
- グループ化(GROUP BY)
- 関数(COUNT、SUM、AVG、MAX、MIN)
- HAVING
- 検索(SELECT、DISTINCT)
- 順序(ORDER BY)
- LIMIT