列Bに異なるデータを持つ列Aに基づいて重複行を検索する必要があります。次に、列Bを更新する必要があります同じデータは、ゼロデータよりも>に基づいています。 1つのレコードが列B = 0000で、他のレコードが列B = 1234の場合は、最初のレコード列Bを1234に更新します。IDがレコードの1つである場合は、もう一つのレコード。重複レコードの列に基づいてレコードの列を更新
0
A
答えて
0
MySQLでは、同じテーブルのデータも取得するUPDATE
を使用できないため、他のデータのコピーをテンポラリテーブルに作成する必要があります(まったく別の方法でこれを実行してください) 。
したがって、このような何か:
CREATE TEMPORARY TABLE duplicate_ids AS (
SELECT card_number, id
FROM the_table AS t1
INNER JOIN the_table AS t2 ON (t1.card_number = t2.card_number and t2.id > t1.id)
WHERE t1.id = '0000'
);
UPDATE the_table
INNER JOIN duplicate_ids ON the_table.card_number = duplicate_ids.card_number
SET the_table.id = duplicate_ids.id;
おそらくあなたがトランザクション内でこれを行うと思います。
データベーススキーマを制御できる場合は、このような重複が発生する可能性を排除する必要があります。あなたのテーブルには、同じカード番号の複数のインスタンスを持つことができますが、IDはどこでも同じことになっている場合は、2つのテーブルが必要です
- あなたが今持っているものを、しかし、ID列なし
- だけ
(card_number, ID)
その後、あなたはID番号を必要とする任意のクエリでは、あなたがJOIN
と、他のテーブルからそれを得ることができますを持つ新しいテーブル。この方法では、同じカードのファイルに2つの異なる番号を付けることは全く不可能です。カードに複数のレコードがある場合でも、その番号を記録する場所は1つだけです。
0
私はこれを行うだろう:
update t join
(select t.cardnum, max(b) as maxb
from t
group by t.cardnum
having count(distinct b) > 1
) tt
on t.cardnum = tt.cardnum
set t.b = tt.maxb
where t.b <> tt.maxb;
サブクエリは、置換値を取得します。 having
句は実際の重複があることを確認します。
関連する問題
- 1. SQL重複レコードに基づく最新レコードを選択
- 2. テーブル2の重複に基づいてテーブル1のレコードを更新します。
- 3. 別の列の条件に基づいて列のレコードを更新します。
- 4. 次のレコードに基づいてレコードを更新する
- 5. 列の重複値に基づいてレコードを選択する方法は?
- 6. VBA SQL:レコード数に基づいたレコードの更新
- 7. 条件に基づいて重複レコードのみを表示
- 8. MS-Access 2016 - 別のテーブルのレコードに基づいてレコードを更新する
- 9. 列の1つに基づいて複製されていないレコードを検索して更新します。
- 10. 日付に基づいて2番目の重複レコードを変更します
- 11. SQL Serverのレコード数に基づいてレコードを2列に分割します
- 12. いくつかの列に基づいて重複レコードのみを選択してください
- 13. 条件に基づいてレコードを更新するには?
- 14. Rails:別の配列のレコード(文字列)に基づいて配列を照会
- 15. 2つの日付列に基づいてレコードを選択
- 16. シェルスクリプトの特定のフィールドに基づいて重複レコードを削除します。
- 17. タイムスタンプタイプのプライマリキーコンポジットに基づいたレコードの更新
- 18. 2つの列に基づいて重複レコードのみを表示するSqlクエリ
- 19. プライマリキーに基づくレコードの更新が遅い
- 20. SQLサーバーが同じテーブルに2回参加して、別の列のレコードに基づいて列のレコードを更新します。
- 21. 複数の列に基づいて重複を特定する
- 22. 列に基づいてレコードを区切る
- 23. 他のレコードに基づいてテーブルのレコードをフィルタリングする
- 24. 複数のインデックスに基づくElasticsearch Railsの最新のレコード
- 25. 派生した列の値に基づいたレコードの検索
- 26. 現在のレコードに基づくテーブルの更新
- 27. PHPを使用してMySQLの重複レコードを更新する
- 28. IDに基づいて最新のレコードを照会
- 29. 重複キー更新で新しいレコードを作成する
- 30. MS Access同じテーブルの他のレコードのデータに基づいてレコードを更新する
あなたが既に試したことを示してください – noscreenname