SQL記述難易度 応用

この SQL はエラーになる。WITH を正しい位置に直して書いてください。

SELECT name FROM t WITH t AS (SELECT name FROM emp WHERE salary > 300);

正答

正答WITH t AS (SELECT name FROM emp WHERE salary > 300) SELECT name FROM t;

解説

WITH 句は、本体の SELECT より前、文の先頭に書く。「WITH 名前 AS (問い合わせ)」で定義した一時的な表を、その後ろの SELECT が FROM t として参照する、という順番になる。SELECT の後ろに WITH を書くと、SQLite は WITH の位置で構文エラーを返す。サブクエリの別名と違い、CTE の名前は括弧の前に「名前 AS」の順で書く点にも注意する。この表では B と D が返る。

参考: www.sqlite.org

withcteclause-order

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

SQLクイズへ