名前順で先頭 3 件を取りたい。正しく直したものは?
SELECT name FROM users LIMIT 3 ORDER BY name;正答
- SELECT name FROM users LIMIT 3;
- SELECT name ORDER BY name FROM users LIMIT 3;
- SELECT name FROM users ORDER BY name LIMIT 3;
- SELECT name FROM users ORDER BY name DESC LIMIT 3;
解説
LIMIT は並べ替えた結果から先頭 N 行を取る句で、文の末尾に置く。ORDER BY より前に書くと構文エラーになる。選択肢 1 のように ORDER BY を外すと文法上は通るが、どの 3 行が返るかは保存順に依存して保証されない。選択肢 4 は DESC で降順になるため、名前順の先頭ではなく末尾の 3 件が返る。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ