私はトランザクションのデータベーステーブルを持っています。コード内にいくつかの曖昧さがあるため、同じ請求書に肯定的な取引と否定的な取引が同じ金額で行われたケースが数多くあります。 voidという名前のソフト削除列があります。私はこれを更新しようとしています。同じテーブル内の一致するレコードを更新する
基本的に私が欲しいものはこれです:
UPDATE transactions pos JOIN transactions neg on pos.invoice_id = neg.invoice_id
AND pos.amount = neg.amount AND pos.effect = 1 AND neg.effect = -1
AND pos.void IS NULL AND neg.void IS NULL
SET pos.void = true, neg.void = true
はちょうどかかわらず、であるとして、これを実行し、一意のペアを識別しません。したがって、請求書に+ X、-X、+ X、または代わりに-Y、+ Y、-Yがある場合、すべて無効になります。私はこれが一般的な問題だと思ったでしょうが、私の問題によく似た質問や答えは見られません。
サブクエリを使用するのが似通った質問のほとんどの回答ですが、2つではなく1つのエントリを更新しようとしていますが、両方のエントリを更新する方法がわかりません。
あなたのテーブル構造を投稿した場合のおかげで、 -Eric
男ああ...私は、クエリを持っていました私の最後の仕事でこれに非常に似た何かをしました。それは可能ですが、現時点ではそれがどのように機能しているかを覚えていません。 – CptMisery