先頭 5 件だけに絞る LIMIT 5 を足したい。正しく直したものは?
SELECT *FROM data_tableWHERE data = 'AAA'ORDER BY data DESC;正答
- SELECT * LIMIT 5 FROM data_table WHERE data = 'AAA' ORDER BY data DESC;
- SELECT * FROM data_table WHERE data = 'AAA' ORDER BY data DESC LIMIT 5;
- SELECT * FROM data_table WHERE data = 'AAA' LIMIT 5 ORDER BY data DESC;
- SELECT * FROM data_table WHERE data = 'AAA' ORDER BY data LIMIT 5 DESC;
解説
SELECT 文の句は SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT の順に書く。LIMIT は並べ替えた結果から先頭 N 行を取る句なので、ORDER BY より前には置けず、WHERE の直後に書くと構文エラーになる。ORDER BY data と DESC の間に挟むのも誤りで、DESC は直前の列に付く修飾なので分断できない。SELECT の直後に書く形は SQL Server の TOP の発想で、SQLite では通らない。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ