重複行の削除/更新に関するその他の記事を見てきましたが、私の特定の苦境に正しく適用する方法について少し混乱しました。MYSQLの論理削除のために重複行を更新する
誰かが私に正しい方向へのプッシュを与えることを望んでいた。
私は、それにいくつかの重複行を持つテーブルがあると論理的に私のテーブルは、符号なしのbigintであるidという主キーを持つ1.
にisdeleted列を設定することにより、各ユーザーのためにそれらを削除したいです複製された別のIDを表すcidという列があります。 cidはユーザーごとに一意ではありませんが、特定のユーザーに対して一意である必要があります。
あなたは私のテーブルでこれを見ることができる例えば:
id | cid | userid | is_deleted
1 | 1 | 100 | 0
2 | 2 | 101 | 0
3 | 1 | 102 | 0
4 | 1 | 100 | 0
5 | 2 | 101 | 0
したがって、この場合には、ユーザ#100が同じである2つのCIDを持っている - のレコード#1とレコード#4上に。同様に、ユーザー#101には同じレコード番号2とレコード番号5の2つのCIDがあります。
私がしたいのは、特定のユーザーの重複したCIDを取得し、is_deletedを1に設定することです。実際の行をパージします。私は1つのレコードをis_deleted = 0として保存したいので、このように何かが保持されます。
だから私が望んでいるはずだ出力は、次のとおりです。
id | cid | userid | is_deleted
1 | 1 | 100 | 0
2 | 2 | 101 | 0
3 | 1 | 102 | 0
4 | 1 | 100 | 1
5 | 2 | 101 | 1
私はコードでこれを行うことができますが、それはかなり複雑になるだろう、と私は純粋なSQL文のためのいくつかの素晴らしい回答を見てきました。誰かがアドバイスをしたり、解決策を提示したりすることができますか?
ありがとうございます!