SQL4 択難易度 基礎

20 歳以上に絞る条件 AND age >= 20 を足したい。正しく直したものは?

SELECT nameFROM usersWHERE active = 1ORDER BY name;

正答

  1. SELECT name AND age >= 20 FROM users WHERE active = 1 ORDER BY name;
  2. SELECT name FROM users WHERE active = 1 ORDER BY name AND age >= 20;
  3. SELECT name FROM users AND age >= 20 WHERE active = 1 ORDER BY name;
  4. SELECT name FROM users WHERE active = 1 AND age >= 20 ORDER BY name;

解説

行を絞り込む条件はすべて WHERE 句にまとめ、複数の条件は AND や OR でつなぐ。SELECT 句に書くと name AND age >= 20 という 0/1 の値の列を作るだけで行は絞られない。ORDER BY の後ろに書くと並べ替えの式として扱われ、やはり絞り込みにならない。FROM users の直後に AND を置くと構文エラー。WHERE は 1 つの文に 1 回なので、既にある条件の後ろに AND で続ける。

参考: www.sqlite.org

whereclause-order

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

SQLクイズへ