とにかくSQLを楽しく、効率的に学ぼうという趣旨の記事です。
今回はORDER BY、LIMIT、OFFSETを解説します。
並べ替えたり表示数を絞ったりと非常に便利な機能となっています。
ORDER BYとは?
※↓を参考にしています。
ORDER BYとは並べ替え機能です。
使い方もいたってシンプル。
SELECT * FROM テーブル名
ORDER BY 列名 ASC/DESC;
ORDER BYの後に、基準にしたい列名を入れるだけです。
ASC/DESCは昇順か降順かの違いです。
ASCー昇順
DESCー降順
昇順と降順の違い
意外と答えにくいのが昇順と降順の違いです。
昇順はしょうじゅん、降順はこうじゅんと読みますが、意味としては漢字のままです。
順番が早いものから昇っていくのが昇順です。
数字なら1,2,3です。
ひらがななら、あ、い、うの順です。
降順はその逆、末尾から降りていきます。
3,2,1であったり、お、え、うの順です。
複数指定もOK!
複数列に並べ替えを行うこともできます。
SELECT * FROM テーブル名
ORDER BY 列名 ASC/DESC, 列名2 ASC/DESC;
「,」で区切るだけです。
複数並び替えと聞くとイメージしにくいかと思いますが
仕組みはめちゃくちゃ単純です。
1つ目の並び替えが優先、優先列が重複している部分でのみ、2つ目の並び替えは発動します。
苗字 | 名前 |
---|---|
山田 | 太郎 |
山田 | たかし |
山田 | 太郎 |
鈴木 | 太郎 |
上記表を苗字基準で並び替えたとします。
この時、山田姓の順番を変えたとしても、苗字列の並びが変わるわけじゃないですよね。
1列目と2列目を入れ替えても、変化があるのは名前列だけです。
つまり優先列は無影響となり、2つ目、名前列の並び替えが可能となります。
LIMITとは?
LIMITは抽出する行数に制限をかけられます。
SELECT * FROM テーブル名
LIMIT 制限数;
LIMITのあとに書いた文字数だけ抽出できます。
OFFSETとは?
OFFSETはLIMITを保管する機能で、制限を始める位置を決めることができます。
SELECT * FROM テーブル名
LIMIT 制限数 OFFSET 開始位置;
10行目から3つだけ抽出したいのなら
SELECT * FROM テーブル名 LIMIT 3 OFFSET 9;
1文字目は0番目と表現されるので、10行目はー1した9となります。
省略してもいい
OFFSETは省略OKです。
SELECT * FROM テーブル名 LIMIT 3,9;
ちなみに何も書かなければ0とみなされます。
Lesson 4の和訳と解答
①List all directors of Pixar movies (alphabetically), without duplicates
『ピクサー映画のすべての監督を(アルファベット順に)重複なしのリストにして』
SELECT DISTINCT Director FROM movies
ORDER BY Director ASC;
②List the last four Pixar movies released (ordered from most recent to least)
『最近リリースされた4つのピクサー映画をリストにして(最新のものから順に並べ替え)』
SELECT * FROM movies
ORDER BY year DESC LIMIT 4;
③List the first five Pixar movies sorted alphabetically
『初期5作のピクサー映画をABC順でリストにして』
SELECT * FROM movies
ORDER BY Title ASC LIMIT 5;
④List the next five Pixar movies sorted alphabetically
『次の(3問目の次)ピクサー映画5作品をABC順でリスト化して』
SELECT * FROM Movies
ORDER BY Title ASC LIMIT 5 OFFSET 5;
要するに6番目からってことだね!
おわり
この辺りまで覚えておけばSQLを最低限使えると言ってもいいじゃんないでしょうか。
プログラミングは知識をひけらけすものじゃありませんからね。
前回
Audible (オーディブル) – 本を聴くAmazonのサービス
読んでくれてありがとう!
コメント