データベース基礎コース6/13
ORDER BYとLIMITで条件変えてデータを取得しよう
こちらではMySQLを通じたデータベースの使い方について、SELECT文を使用する際の様々なレコード取得方法について解説します。
今回は、ORDER BYとLIMITを使用したレコードの取得方法について学んで参ります。
こちらの学習を通じて、データベースの使い方について理解を深めていきましょう。
ORDER BYとは
SELECT文を使用してレコードを取得する際に、ある値を基に並び替えてデータを表示させたい場合にはORDER BYを使用します。
ORDER BYの後ろに並び替えの基準とするカラム名を指定し、最後に並び替えの順序を昇順(ASC
)または降順(DESC
)で指定します。
SELECT カラム名 FROM テーブル名 ORDER BY 基準にしたいカラム名 [ASC または DESC];
ここに、仮想レストランにおける飲料売上を記録したbeverageテーブルがあります。
id | name | count | price | amount |
---|---|---|---|---|
1 | 生ビール | 50 | 800 | 40000 |
4 | グラスワイン | 40 | 850 | 34000 |
3 | ハイボール | 90 | 700 | 63000 |
2 | レモンサワー | 70 | 700 | 49000 |
5 | ウヰスキー | 30 | 900 | 27000 |
例えばid
を基準に昇順で並び替えたデータを取得したい場合は、下記のようにSQL文を記述します。
SELECT * FROM beverage ORDER BY id ASC;
#実行結果
+----+-------------+-------+-------+--------+
| id | name | count | price | amount |
+----+-------------+-------+-------+--------+
| 1 | 生ビール | 50 | 800 | 40000 |
| 2 | 生レモンサワー | 70 | 750 | 52500 |
| 3 | ハイボール | 90 | 700 | 63000 |
| 4 | グラスワイン | 40 | 900 | 36000 |
| 5 | ウヰスキー | 30 | 900 | 27000 |
+----+-------------+-------+-------+--------+
ASC
(またはDESC
)を記述せずにORDER BYを使用した場合は、デフォルト設定により昇順でソートされます。
SELECT * FROM beverage ORDER BY count;
#実行結果(昇順で表示される)
+----+-------------+-------+-------+--------+
| id | name | count | price | amount |
+----+-------------+-------+-------+--------+
| 5 | ウヰスキー | 30 | 900 | 27000 |
| 4 | グラスワイン | 40 | 900 | 36000 |
| 1 | 生ビール | 50 | 800 | 40000 |
| 2 | 生レモンサワー | 70 | 750 | 52500 |
| 3 | ハイボール | 90 | 700 | 63000 |
+----+-------------+-------+-------+--------+
また、比較演算子による条件付けを組み合わせてのレコードの取得も可能です。比較演算子は下記表をご参照下さい。
比較演算子 | 使用用途 |
---|---|
= | ~と等しい |
< | ~より小さい |
> | ~より大きい |
<= | ~以下 |
>= | ~以上 |
<> または != | ~と等しくない |
それでは比較演算子を使用して、売上金額50,000円以下のレコードを取得するSQL文を記述してみましょう。
SELECT * FROM beverage WHERE amount <= 50000 ORDER BY amount DESC;
#実行結果
+----+-------------+-------+-------+--------+
| id | name | count | price | amount |
+----+-------------+-------+-------+--------+
| 1 | 生ビール | 50 | 800 | 40000 |
| 4 | グラスワイン | 40 | 900 | 36000 |
| 5 | ウヰスキー | 30 | 900 | 27000 |
+----+-------------+-------+-------+--------+
LIMITとは
SELECT文を使用してレコードを取得する際に、特定の行数分のみレコードを取得したい場合があります。この場合はLIMITを使用することで、指定した行数分のレコードを取得することができます。
SELECT カラム名 FROM テーブル名 LIMIT 取得したい行数;
ここでもう一度、beverageテーブルを使用します。
id | name | count | price | amount |
---|---|---|---|---|
1 | 生ビール | 50 | 800 | 40000 |
4 | グラスワイン | 40 | 850 | 34000 |
3 | ハイボール | 90 | 700 | 63000 |
2 | レモンサワー | 70 | 700 | 49000 |
5 | ウヰスキー | 30 | 900 | 27000 |
このテーブルから「売上金額の高い順」に3行分のレコード取得する場合には、下記の様にSQL文を記述します。
SELECT * FROM beverage ORDER BY amount DESC LIMIT 3;
#実行結果
+----+-------------+-------+-------+--------+
| id | name | count | price | amount |
+----+-------------+-------+-------+--------+
| 3 | ハイボール | 90 | 700 | 63000 |
| 2 | 生レモンサワー | 70 | 750 | 52500 |
| 1 | 生ビール | 50 | 800 | 40000 |
+----+-------------+-------+-------+--------+
まとめ
今回はSELECT文におけるORDER BYとLIMITを使用した条件付きのレコード抽出方法について学習しました。
ここで紹介されたもの以外にも、条件を付けてのレコード取得方法が存在します。
気になった方はぜひ調べてみて下さい。実際に触れてみたい方は、環境を起動しましょう。
問題を解くためには、十分な画面サイズのPC環境をご利用下さい。