Order Byで並ぶ順番を決めよう!SQL超初心者の勉強

2020-04-26

テーブルの並び順を決める時にはOrder By(オーダーバイ)を使用します。
Order byを使いこなしてテーブルの並び順を自由自在に操れるようになりたいと思います。

動作環境

SQL FIDDLEでMySQL5.6、PostgreSQL9.6、SQLiteで動作確認しました。
下記文章は主にPostgreSQLで仕様で調べています。

Order By とは

Order By(オーダーバイ)は並び順を決める際に利用します。sort(ソート/整列)する時に使うとも言われます。

順番には昇順(ASC/小さい方から大きい方へ並べる)と降順(DESC/大きい方から小さい方へ並べる)があります。デフォルトは昇順です。

構文

SELECT文の例。

SELECT * FROM テーブル名 order by 列名 ASC/DESC

昇順(ASC)はデフォルトであるため省略した場合、ASC/DESCの記載を昇順になります。

ちなみにASCはAscending(上に向かう)、DEDCはDescending(下がっていく)の省略系です。

Order By を使ってみよう!

Order Byのサンプルコードを見てみましょう。

準備

以下のテーブルを使用します。

ItemIDItemNameStockArriveDate
1ゼリー402020-04-20
2プリン652020-04-20
3ティラミス402020-04-22
4ヨーグルト102020-04-20

上記テーブルの作成用コードです。

-- CREATE文 stockControl テーブル
CREATE TABLE stockControl (
ItemID numeric(8, 0) unique not null,
ItemName character varying (20),
Stock numeric(8, 0),
ArriveDate DATE,
primary key(ItemID)
);
-- stockControlテーブル用INSERT文
insert into stockControl
values(0001, 'ゼリー', 40, '2020-04-20'),
(0002, 'プリン', 65, '2020-04-20'),
(0003, 'ティラミス', 40, '2020-04-22'),
(0004, 'ヨーグルト', 10, '2020-04-20');

Order Byで昇順で並べてみる

ArriveDateを基に昇順で並べてみます。

SELECT
*
FROM
stockControl
order by
ArriveDate

昇順はデフォルトなのでASCは省略しています。

■ 結果

ItemIDItemNameStockArriveDate
1ゼリー402020-04-20
2プリン652020-04-20
4ヨーグルト102020-04-20
3ティラミス402020-04-22

日付が綺麗に昇順で並びました。

Order Byで降順で並べてみる

Stockが多い順(降順)に並べます。

SELECT
*
FROM
stockControl
order by
Stock Desc

■ 結果

ItemIDItemNameStockArriveDate
2プリン652020-04-20
1ゼリー402020-04-20
3ティラミス402020-04-22
4ヨーグルト102020-04-20

Stockで降順で並びました。

Order byで複数指定してみる

Order byでは複数列を指定することができます。
はじめに書いた方が優先度が高いです。

SELECT
*
FROM
stockControl
order by
ArriveDate Desc,
Stock Desc

それぞれの列に昇順か降順か指定します。わかりやすく降順にしています。

ItemIDItemNameStockArriveDate
3ティラミス402020-04-22
2プリン652020-04-20
1ゼリー402020-04-20
4ヨーグルト102020-04-20

ArriveDate(日付順)で並べ、さらにStock(在庫)が多い順に並んでいます。

おわり

何回書いてもASCとDEDCの英単語を忘れてしまいます。