テーブルを結合する
内部結合ともいう
SELECT 取得するカラム名
FROM テーブル名A
JOIN テーブル名B
ON テーブル名A.カラム名 = テーブル名B.カラム名;
テーブルを結合した際に同じ名前のカラムがあるとエラーになるので“テーブル名.カラム名”でカラム名の前にテーブル名を指定する(WHEREやGROUP BYを使うときも)
サブクエリ
以下のようなテーブルから平均点以上の人のデータを取り出す場合があったとする
id | name | points |
---|---|---|
1 | 佐藤 | 78 |
2 | 鈴木 | 94 |
3 | 伊藤 | 87 |
4 | 田中 | 71 |
5 | 山本 | 90 |
6 | 高橋 | 85 |
今までのやり方だとこんな感じで①平均点を出す、②算出した平均点以上のデータを取り出す
/* ①平均点を出す */
SELECT AVG(points) FROM list;
//pointsの平均を出す(平均は84.1667)
/* ②算出した平均点以上のデータを取り出す */
SELECT * FROM list WHERE points>=84.667;
//84.1667点以上のデータを取り出す
id | name | points |
---|---|---|
2 | 鈴木 | 94 |
3 | 伊藤 | 87 |
5 | 山本 | 90 |
6 | 高橋 | 85 |
それを一つの式でやってしまおうというのがサブクエリ
サブクエリはクエリの中で使うクエリのことで、どんどんつなげられるが長いと重くなる
SELECT *
FROM list
WHERE points>=(
SELECT AVG(points)
FROM list
)
;
WHEREの中だけでなくSELECTやFROMの中でも使うことができる
コメント