危険察知記述難易度 標準

状況

本番 DB で 2025 年より前の注文を消す作業。作業者がいきなり DELETE を打とうとしたので、先に同じ条件で件数を数えてもらう。

COUNT(*) を使い、同じ条件で件数を数える SQL を書いてください。

DELETE FROM orders WHERE created_at < '2025-01-01';

正答

正答SELECT COUNT(*) FROM orders WHERE created_at < '2025-01-01';

解説

DELETE の WHERE をそのまま SELECT COUNT(*) FROM に付け替えると、消える行数を事前に知ることができる。想定と違う数が出たら、条件か想定のどちらかが誤っているので、実行前に止められる。WHERE を手で打ち直すと、確認した条件と実行する条件がずれる危険があるため、文字列を貼り付けて使う。件数に加えて SELECT * ... LIMIT 10 で数行を目視すると、対象の中身も確かめられる。

参考: www.sqlite.org

sqldeletecount

この問題を含む 危険察知 のテストを制限時間つきで解く

危険察知クイズへ