これを明確に説明できます。私は、グループ内の人々の一意のIDである必要があるテーブルを持っています。 IDは、最初の3文字の名前と生年月日を使用して生成されます。通常、小グループ(500未満)ではこれがうまく動作します。しかし、大規模なグループでは、いくつかの重複が発生します。次に重複するIDに-1、-2、-3などを追加します。たとえば:一致する一致基準に基づいて重複IDを更新するMySQLを1つのテーブルにまとめて
ID GROUP UID FIRST_NAME
1 123456 ALE1990ALEXIS
2 123456 ALE1990ALEXANDER
3 123456 ALE1990ALEJANDRO
4 789789 ALE1990ALEX
私は何をしたいのは、ID 2および3のための追加-1および-2、それぞれ自分のUIDフィールドに1,2および3は、今(GROUP + UID)一意になるように。 IDは2と3のため= 1 DUPLICATE_RECORDフィールドを設定するしかし、私はまだする必要がある場合
UPDATE table A
JOIN table B
ON B.GROUP = A.GROUP
AND B.UID = A.UID
AND B.FIRST_NAME <> A.FIRST_NAME
AND B.ID < A.ID
SET A.duplicate_record = 1;
:GROUPは、私はこのような何かを始めました
異なるため、ID 4が無視されるだろうそれらのUIDに-1、-2、-3などを付け加えてください。どうやってそれを行うのか分かりません。たぶん、重複のフラグ= 1を設定するのではなく、重複しているレコードの数を設定する必要がありますか?
おそらく、IDを解析して追加をチェックするのは簡単でしょう。存在する場合は、それをintとしてキャストし、1を追加して、再度追加して更新します。もちろん、それが存在しない場合は、1を追加することができます。 –
*常に* IDを追加すると、UIDはグループに関係なく常に一意であることが保証されます。 – kmoser