SQL4 択難易度 標準

名前順で先頭 3 件を取りたい。正しく直したものは?

SELECT name FROM users LIMIT 3 ORDER BY name;

正答

  1. SELECT name FROM users LIMIT 3;
  2. SELECT name ORDER BY name FROM users LIMIT 3;
  3. SELECT name FROM users ORDER BY name LIMIT 3;
  4. SELECT name FROM users ORDER BY name DESC LIMIT 3;

解説

LIMIT は並べ替えた結果から先頭 N 行を取る句で、文の末尾に置く。ORDER BY より前に書くと構文エラーになる。選択肢 1 のように ORDER BY を外すと文法上は通るが、どの 3 行が返るかは保存順に依存して保証されない。選択肢 4 は DESC で降順になるため、名前順の先頭ではなく末尾の 3 件が返る。

参考: www.sqlite.org

limitorder-byclause-order

この問題を含む SQL のテストを制限時間つきで解く

SQLクイズへ