SQL4 択難易度 基礎

先頭 5 件だけに絞る LIMIT 5 を足したい。正しく直したものは?

SELECT *FROM data_tableWHERE data = 'AAA'ORDER BY data DESC;

正答

  1. SELECT * LIMIT 5 FROM data_table WHERE data = 'AAA' ORDER BY data DESC;
  2. SELECT * FROM data_table WHERE data = 'AAA' ORDER BY data DESC LIMIT 5;
  3. SELECT * FROM data_table WHERE data = 'AAA' LIMIT 5 ORDER BY data DESC;
  4. 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

selectlimitclause-order

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

SQLクイズへ