給与の高い順に上位 2 名を出したい。正しいのは?
SELECT name FROM emp LIMIT 2 ORDER BY salary DESC;正答
- SELECT name FROM emp ORDER BY salary LIMIT 2 DESC;
- SELECT TOP 2 name FROM emp ORDER BY salary DESC;
- SELECT name LIMIT 2 FROM emp ORDER BY salary DESC;
- SELECT name FROM emp ORDER BY salary DESC LIMIT 2;
解説
LIMIT は ORDER BY で並べ替えた結果から先頭 N 行を取る句なので、文の最後に書く。LIMIT を ORDER BY より前に置くと SQLite では構文エラーになる。DESC は直前の並べ替えキーに付く修飾語で、LIMIT を挟んで切り離すことはできない。SELECT TOP 2 は SQL Server の書き方で、SQLite には TOP というキーワードがないため通らない。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ