タグ

SQLとSELECTに関するmohnoのブックマーク (1)

  • LEFT JOINの論理削除はWHERE句でしぼるな

    これはなに こんにちは、レバテック開発部のもりたです。 論理削除、皆さんは採用していますか? わたしが普段開発するシステムでは論理削除を採用しているものもあるのですが、今回はその論理削除の気を付けるべき点として「子テーブルの論理削除されたレコードの絞り込みをWHERE句でしてはならない」という問題について解説します。慣習的に起こりにくいミスなんですが、案外ダメなことを知らない人もいると思うので、ご紹介です。 どうすればいいか? こうじゃなくて... SELECT * FROM parents LEFT JOIN children ON parents.id = children.parents_id WHERE parents.deleted_at IS NULL AND children.deleted_at IS NULL -- 子テーブルの論理削除の絞り込み ; SELECT * F

    LEFT JOINの論理削除はWHERE句でしぼるな
    mohno
    mohno 2025/11/21
    そりゃ、LEFT JOINなのにchildrenテーブルをparentsの抽出条件に入れちゃダメ、という話なのでは。「不具合」というより仕様というか。「親テーブルの絞り込みはWHERE句で大丈夫です」
  • 1