状況
本番 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
この問題を含む 危険察知 のテストを制限時間つきで解く
危険察知クイズへ