データベースからデータを抽出する際に、特定の条件に当てはまるデータのみを抽出したい際にはWHERE句・HAVING句というものを用います。今回はこのWHERE句・HAVING句について紹介します。
条件付き取得の基本
userテーブル
| Id | name | class | |
| 1 | 山田 | A | yamada@example.com |
| 2 | 田中 | B | tanaka@example.com |
| 3 | 佐藤 | A | sato@example.com |
WHERE句
下記のようにWHERE以下に条件を指定することで指定した条件に当てはまるレコードのみを抽出することができます。
SQL
SELECT
フィールド名
FROM
テーブル名
WHERE
演算子を使って検索条件を指定記の様に記載することでAクラスのユーザーのみを抽出することができます。
SQL
SELECT
name
FROM
user
WHERE
class == 'A';抽出結果
SQL
name
山田
佐藤複数条件を指定したい際は下記のようにANDで条件をつなぐができます。
SQL
SELECT
name
FROM
user
WHERE
class == 'A'
AND
class == 'B';抽出結果
SQL
name
山田
田中
佐藤HAVING句
HAVING句はWHERE句と同じ挙動ですが、処理のタイミングがWHERE句の後になります。GROUP BY句というものを用いた際にGROUP BY句の処理が行われた際に、HAVING句の処理が行われるという順番になります。単に順番が違いだけなのでGROUP BY句のない際にHAVING句を用いる必要はないです。
例題
下記コードにより抽出される値は下記のうちどれか
SQL
SELECT
Id
FROM
user
WHERE
mail == 'tanaka@example.com'- 山田
- 1
- 田中
- 2
回答
4. 2
1. 抽出されるのは名前ではなくId
2. Idが1のユーザーのメールアドレスは”yamada@example.com”
3. 抽出されるのは名前ではなくId
エンジニアからのアドバイス
実際の現場でのWHERE句への条件指定は、より複雑化していきます。条件を整理し、演算子をよく理解して使えるように練習しましょう。
