特定の値より大きい・小さい行に絞り込もう

これまで、特定の値のレコードだけに絞り込む方法や、特定の値に一致しないレコードに絞り込む方法を学んできました。

どちらも、ピンポイントで特定の値を把握している場合に利用できるものでした。

次に学ぶのは、ある値より大きいレコードを抽出したり、逆にある値より小さいレコードを抽出する方法を学びます。

"〇〇円より大きいデータに絞り込みたい" といった場合に使える技です。

書き方

ある列の値が特定の値を超える値に絞り込みたい場合は、 > を使う。

SELECT * FROM テーブル名 WHERE 列名 > 値;

ある列の値が特定の値未満の値に絞り込みたい場合は、 < を使う。

SELECT * FROM テーブル名 WHERE 列名 < 値;

ある列の値が特定の値以上の値に絞り込みたい場合は、 >= を使う。

SELECT * FROM テーブル名 WHERE 列名 >= 値;

ある列の値が特定の値以下の値に絞り込みたい場合は、 <= を使う。

SELECT * FROM テーブル名 WHERE 列名 <= 値;

書き方の説明

不等号を用いることで、"〜を超える" や "〜未満"、"〜以上" および "〜以下"を表現できます。

特定の値より大きい、もしくは小さいものを示したいときは 列名 > 値列名 < 値 を用い、

その特定の値以上の値、もしくは以下の値を示したいときには 列名 >= 値列名 <= 値 を用います。

ユーザー情報が入っている users テーブルのうち、所属部署コード(department_id)が 5 より大きいレコードだけに絞り込みたいとき

SELECT * FROM users WHERE department_id > 5;

ユーザー情報が入っている users テーブルのうち、生年月日(birthday)が 2010 年 6 月 10 日 以上のレコードだけに絞り込みたいとき

SELECT * FROM users WHERE birthday >= "2010-06-10";

商品情報が入っている products テーブルのち、最終更新日時(updated_at)が 2010 年 6 月 10 日 7 時 6 分 20 秒 未満のレコードだけに絞り込みたいとき

SELECT * FROM products WHERE updated_at < "2020-06-10 07:06:20";

練習 1

それでは、products テーブルを用いて練習してみましょう。

次の SQL 文を実行すると、products テーブルより、価格(price)が 2000 以上 のレコードだけ表示されます。

問題 1

sales というテーブルがあります。この sales というテーブルのうち、売上時刻(sold_at) が 2021 年 1 月 10 日 10 時 0 分 10 秒以下のレコードのみを取得する SQL 文を書いてみましょう。

答え合わせ

正解を見る
正解:SELECT * FROM sales WHERE sold_at <= '2021-01-10 10:00:10';
解説:「以下」と指定があるので、その秒を含むレコードまでに限定したいため、 WHERE sold_at <= '2021-01-10 10:00:10' と指定します。なお、普通に業務で用いる際は、それを含むか含まないかは文脈によると思うのでご注意ください。

問題 2

users というテーブルがあります。この users というテーブルのうち、id(数値型) が 455 より大きいレコードのみを取得する SQL 文を書いてみましょう。ただし、取得する列は id 列と name 列だけとします。

答え合わせ

正解を見る
正解:SELECT id, name FROM users WHERE id > 455;
解説:「より大きい」の指定があるので、 > を用い、WHERE id > 455 と指定します。