ホームページ  >  記事  >  データベース  >  MySQLで重複データを削除する方法

MySQLで重複データを削除する方法

(*-*)浩
(*-*)浩オリジナル
2019-05-07 16:22:5212665ブラウズ

重複チェックは、私たちの仕事でよく遭遇するニーズです。次の記事では、MySQL による重複データのクエリ (重複データを削除し、最小 ID を持つデータを一意のデータとして保持する) に関する関連情報を主に紹介します。記事 サンプルコードが詳しく紹介されており、皆様の学習や仕事の参考になります。

推奨コース: MySQL チュートリアル

MySQLで重複データを削除する方法

最近、MySQL データベースへのデータのバッチインポート機能に取り組んでいます。バッチインポートから、このようなデータは、データベースに挿入される前に繰り返し判断されないことがわかります。したがって、すべてのデータがインポートされた後でのみ、ステートメントを実行してデータを削除し、データの一意性を確保できます。

以下では多くのことは説明しません。詳細な紹介を見てみましょう。

テーブル構造は次のとおりです。

テーブル名前: ブランド

MySQLで重複データを削除する方法

操作

SQL ステートメントを使用して重複データをクエリします:


SELECT * from brand WHERE brandName IN(
select brandName from brand GROUP BY brandName HAVING COUNT(brandName)>1 #条件是数量大于1的重复数据
)

SQL を使用して冗長な重複データを削除し、最小の ID を持つ一意のデータを保持します:

注:

間違った SQL : DELETE FROM brand WHERE brandName IN (ブランドから brandName を選択 GROUP BY brandName HAVING COUNT(brandName)>1)
AND Id NOT IN (ブランド GROUP BY brandName HAVING COUNT(brandName)>1 から MIN(Id) を選択)

ヒント: FROM 句で更新のターゲット テーブル 'brand' を指定することはできません FROM 句で更新のターゲット テーブル 'brand' を指定することはできません

理由は、直接調査したデータはデータ削除の条件として使用できないため、検出されたデータに対して一時テーブルを作成してから、その一時テーブルを削除機能の条件として使用する必要があるためです


正确SQL写法:
 DELETE FROM brand WHERE brandName IN 
 (SELECT brandName FROM (SELECT brandName FROM brand GROUP BY brandName HAVING COUNT(brandName)>1) e)
 AND Id NOT IN (SELECT Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName HAVING COUNT(brandName)>1) t)
#查询显示重复的数据都是显示最前面的几条,因此不需要查询是否最小值

結果は次のとおりです:

MySQLで重複データを削除する方法

概要:

多数物事は自分で行う必要があります 段階的に検討されます もちろん、インターネット上の提案も非常に貴重な参考資料やリソースです どのような開発を行う場合でも、それをよりよく習得するには、その動作原理を理解する必要があります。


#

以上がMySQLで重複データを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。