タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

SQLに関するhdampty7のブックマーク (2)

  • 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句でしぼるな
    hdampty7
    hdampty7 2025/11/21
    not existsを使うようになって減ったけど、よくやる。よくSQL書いてるときは問題ないんだけど、書いてないと忘れる。
  • Re: 履歴テーブルから最新の1件を取ってくる方法

    そーだいさんが執筆された記事で、履歴テーブルから最新の1件を取ってくる方法について解説している。PostgreSQLの例だと以下のようなユーザーの履歴データに対し: CREATE TABLE history ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL, data TEXT, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); INSERT INTO history (user_id, data, created_at) VALUES (1, 'First entry of user1', '2024-01-01 10:00:00'), (1, 'Second entry of user1', '2024-01-02 09:30:00'), (2, 'First entr

    Re: 履歴テーブルから最新の1件を取ってくる方法
    hdampty7
    hdampty7 2024/12/11
    いつもgroubyのネストの書き方で部分的にインデックスきかせて対応してた。postgreあまり詳しくないので助かります。
  • 1