いろは2986023 views
小学算数1194618 views
世界の国560595 views
小学理科717236 views
小学社会308636 views
LaTeX957300 views
高校化学2913383 views
高校物理158224 views
教育148875 views
高校国語785655 views
Help
Tools

English

WHERE 句で条件を絞り込む

SELECT 文でデータを取得するとき、WHERE 句を使うと条件を指定して絞り込めます。

基本構文

SELECT カラム名 FROM テーブル名 WHERE 条件;

たとえば users テーブルから age が 20 の人だけを取得するには、こう書きます。

SELECT * FROM users WHERE age = 20;

比較演算子

WHERE 句では、さまざまな比較演算子が使えます。

演算子意味
=等しい
!=等しくない
<より小さい
>より大きい
<=以下
>=以上
-- 20歳より上
SELECT * FROM users WHERE age > 20;

-- 30歳以下
SELECT * FROM users WHERE age <= 30;

文字列の比較

文字列を比較するときは、シングルクォートで囲みます。

SELECT * FROM users WHERE name = '田中';

NULL の判定

NULL かどうかを判定するには、= ではなく IS NULL を使います。

-- email が NULL の行
SELECT * FROM users WHERE email IS NULL;

-- email が NULL でない行
SELECT * FROM users WHERE email IS NOT NULL;

= NULL と書いても期待どおりに動かないので注意してください。NULL は「値がない」という特殊な状態なので、= では比較できません。

AND と OR

複数の条件を組み合わせるには AND や OR を使います。

-- 20歳以上かつ東京在住
SELECT * FROM users WHERE age >= 20 AND city = '東京';

-- 東京か大阪に住んでいる
SELECT * FROM users WHERE city = '東京' OR city = '大阪';

AND と OR を混ぜるときは、括弧を使って優先順位を明確にするとわかりやすくなります。

SELECT * FROM users 
WHERE age >= 20 AND (city = '東京' OR city = '大阪');

BETWEEN

範囲を指定するには BETWEEN を使います。

-- 20歳から30歳まで
SELECT * FROM users WHERE age BETWEEN 20 AND 30;

これは age >= 20 AND age <= 30 と同じ意味です。両端の値も含まれます。

LIKE

部分一致で検索するには LIKE を使います。

-- 「田」で始まる名前
SELECT * FROM users WHERE name LIKE '田%';

-- 「田」を含む名前
SELECT * FROM users WHERE name LIKE '%田%';

-- 「田」で終わる名前
SELECT * FROM users WHERE name LIKE '%田';

% は任意の文字列(0 文字以上)を表すワイルドカードです。_ を使うと任意の 1 文字を表せます。

WHERE 句を使いこなすと、必要なデータだけを効率よく取得できるようになります。