この記事では、MySQL で重複データを削除する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
SKU に対応する対応する重みテーブルは、SKU_ID に対応する唯一の重みデータに対応する必要があります。これにより、プログラム エラーにより同じ冗長データが発生します。 1 つだけを保持し、他は削除します。
説明 | |
---|---|
増分 | |
sku_idID | |
Weight |
SELECT sku_id,COUNT(id) FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1
SELECT min(id) FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1
SELECT id,sku_id FROM weight WHERE sku_id IN(
SELECT sku_id FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1)AND id NOT IN(
SELECT MIN(id) FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1)
DELETE FROM weight WHERE sku_id IN(
SELECT sku_id FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1)AND id NOT IN(
SELECT MIN(id) FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1)
理由は次のとおりです。このテーブルの削除中に、このテーブルは同時にクエリされ、このテーブルはクエリと削除も同時に行われます。これはデッドロックとして理解できます。 。 Mysql は、同じテーブルの削除とクエリのこの操作をサポートしていません
错误代码: 1093You can't specify target table 'weight' for update in FROM clause
解決策は次のとおりです。削除するデータをサードパーティのテーブルとしてクエリし、フィルタリングして削除します。
DELETE FROM `weight` WHERE sku_id IN( SELECT sku_id FROM (SELECT sku_id FROM `weight` GROUP BY sku_id HAVING COUNT(sku_id) > 1) table1)AND id NOT IN ( SELECT id FROM (SELECT MIN(id) AS id FROM `weight` GROUP BY sku_id HAVING COUNT(sku_id) > 1) table2)
アップデートも上記と同じ原理で動作します。
推奨学習: 「
mysql ビデオ チュートリアル以上がmysql が重複データを削除する方法を説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。