重複する行をすばやく確認するには、単一の単純なクエリを実行します
ここでは、テーブルにクエリを実行して、同じuser_id、market_place、skuの重複行をすべてリストしています。
select user_id, market_place,sku, count(id)as totals from sku_analytics group by user_id, market_place,sku having count(id)>1;
重複する行を削除するには、削除する行を決定する必要があります。たとえば、IDが小さい方(通常は古い方)、またはその他の日付情報が含まれている可能性があります。私の場合、新しいIDが最新の情報であるため、低いIDを削除したいだけです。
まず、正しいレコードが削除されるかどうかを再確認します。ここでは、削除される重複からレコードを選択しています(一意のIDによって)。
select a.user_id, a.market_place,a.sku from sku_analytics a inner join sku_analytics b where a.id< b.id and a.user_id= b.user_id and a.market_place= b.market_place and a.sku = b.sku;
次に、削除クエリを実行して、複製を削除します。
delete a from sku_analytics a inner join sku_analytics b where a.id< b.id and a.user_id= b.user_id and a.market_place= b.market_place and a.sku = b.sku;
バックアップ、ダブルチェック、検証、バックアップの検証、実行。