20 歳以上に絞る条件 AND age >= 20 を足したい。正しく直したものは?
SELECT nameFROM usersWHERE active = 1ORDER BY name;正答
- SELECT name AND age >= 20 FROM users WHERE active = 1 ORDER BY name;
- SELECT name FROM users WHERE active = 1 ORDER BY name AND age >= 20;
- SELECT name FROM users AND age >= 20 WHERE active = 1 ORDER BY name;
- 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
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ