MySQL で重複レコードをクエリして削除する方法の完全なガイド

MySQL で重複レコードをクエリして削除する方法の完全なガイド

序文

この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のために共有します。詳細な紹介を見てみましょう。

重複するタイトルを持つすべてのレコードを検索します。

user_table から title,count(*) を count として選択し、count>1 を持つ title でグループ化します。
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC

1. 重複レコードを見つける

1. 重複レコードをすべて検索する

SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC

2. 重複レコードをフィルタリングする(1つだけ表示される)

ID が含まれた HZT から * を選択 (タイトル別に HZT グループから最大 (ID) を選択)

注: これはIDが最も大きいレコードを表示します

2.重複レコードを削除する

1. 重複レコードをすべて削除します(注意して使用してください

繰り返しフィールドがあるテーブルを削除します (テーブルから繰り返しフィールドを選択します。繰り返しフィールドでグループ化します。カウント(*)>1 を持つ)

2. 1 つ保持します (ほとんどの人はこれが必要です^_^)

ID が含まれない HZT を削除します (タイトル別に HZT グループから最大 (ID) を選択)

注:最も大きなIDを持つレコードがここに保持されます

3. 例

1. テーブル内の重複レコードを検索します。重複レコードは単一のフィールド (peopleId) に基づいて決定されます。

peopleId が in である people から * を選択します (count(peopleId) > 1 を持つ peopleId で people グループから peopleId を選択)

2. テーブル内の冗長な重複レコードを削除します。重複レコードは、単一のフィールド (peopleId) に基づいて決定されます。最小の rowid を持つレコードのみが保持されます。

peopleId が (count(peopleId) > 1 を持つ peopleId で people グループから peopleId を選択) かつ rowid が (count(peopleId) > 1 を持つ peopleId で people グループから min(rowid) を選択) ではない people から削除します。

3. テーブル内の重複レコードを検索する(複数のフィールド)

履歴書 a から * を選択します。ここで (a.peopleId、a.seq) です (履歴書から peopleId、seq を選択し、count(*) > 1 である peopleId、seq でグループ化します)

4. テーブル内の重複レコード(複数のフィールド)を削除し、最小のROWIDを持つレコードのみを残します。

履歴書 a から、(a.peopleId、a.seq) が (select peopleId、seq from vitae group by peopleId、seq having count(*) > 1) に含まれ、rowid が (select min(rowid) from vitae group by peopleId、seq having count(*)>1) に含まれない場所を削除します。

5. テーブル内の重複レコード(複数のフィールド)を検索し、最小のROWIDを持つレコードを除外する

vitae a から * を選択します。ここで、(a.peopleId、a.seq) は (select peopleId、seq from vitae group by peopleId、seq having count(*) > 1) に含まれ、rowid は (select min(rowid) from vitae group by peopleId、seq having count(*)>1) に含まれません。

4. 補足

重複レコードが 2 つ以上あります。1 つは完全に重複したレコード、つまりすべてのフィールドが重複しているレコードです。もう 1 つは、一部のキー フィールドが重複しているレコードです。たとえば、名前フィールドが重複していますが、他のフィールドは重複していないか、重複していても無視できます。

1. 最初のタイプの繰り返しは、解決が簡単です。

テーブル名から別の*を選択

重複レコードのない結果セットを取得できます。

テーブルから重複レコードを削除する必要がある場合 (重複レコードを 1 つだけ保持する場合)、次のように削除できます。

tableName から #Tmp に distinct * を選択
テーブルテーブル名を削除します
#Tmp から tableName に * を選択
テーブル #Tmp を削除します

この重複はテーブルの設計が不適切であるために発生し、一意のインデックス列を追加することで解決できます。

2. このタイプの重複問題では、通常、重複レコードの最初のレコードを保持する必要があります。操作方法は次のとおりです。

Name と Address という名前の繰り返しフィールドがあり、これら 2 つのフィールドに対して一意の結果セットを取得したいとします。

autoID として identity(int,1,1) を選択し、* を #Tmp に tableName から入力します。
名前、自動ID で #Tmp グループから min(自動ID) を自動 ID として #Tmp2 に選択します。
#Tmp から * を選択し、autoID が in であることを確認します (#tmp2 から autoID を選択)

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQL で複数のデータをランダムにクエリする方法
  • MySQLテーブル内の重複データをクエリする方法
  • 行から行へのMySQLクエリステートメント
  • MySQLクエリ連続記録方式

<<:  Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明

>>:  Linuxにgitをインストールする方法

推薦する

VMware15 の CentOS7 インストールの詳細なプロセスとよくある問題 (画像とテキスト)

1. インストールパッケージの準備VMware-player-15.0.4-12990004、非商...

MySQLはbinlogを通じてデータを復元する

目次MySQL ログファイルバイナリログBinlogログがオンになっていますログ記録を有効にする方法...

Vueプラグインの書き方を説明する記事

目次プラグインとはプラグインの作成プラグインの使用要約するプラグインとはVue フレームワークでは、...

Vue プロジェクトで axios をカプセル化する方法 (http リクエストの統合管理)

1. 要件Vue.js フレームワークを使用してフロントエンド プロジェクトを開発する場合、サーバ...

左右の幅を固定し、中央の幅を適応させたHTMLレイアウトのソリューションの詳細な説明

この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...

React Diff Principle の詳細な分析

目次差分アルゴリズムレイヤーごとの比較同じタイプのコンポーネントを比較する同じタイプの要素の比較子ノ...

MySQL マスタースレーブの原理と構成の詳細

MySQLのマスタースレーブ構成と原理、参考までに具体的な内容は以下のとおりです。 1. 環境の選択...

HTML5+CSS3コーディング標準

黄金律プロジェクトに何人の人が取り組んでいるかに関係なく、すべてのコード行が同じ人によって書かれたよ...

CentOS 7 で NFS ファイル共有ストレージ サービスを構築するための完全な手順

序文NFS (Network File System) は、ネットワーク ファイル システムを意味し...

Docker の MySQL コンテナのタイムゾーン問題の修正

序文Ahhang が Springboot プロジェクトを開発していたとき、フロントエンドから検証コ...

Mysqlマスタースレーブ同期の実装原理

1. MySQL マスター/スレーブ同期とは何ですか?マスター データベースのデータが変更されると、...

Dockerfile における ENV 命令の具体的な使用法の詳細な説明

1. Dockerfile 内の ENV 命令は、イメージの環境変数を定義するために使用されます。次...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...

Vue フロントエンド開発における階層的にネストされたコンポーネント間の通信の詳細な説明

目次序文例まとめ序文Vue の親子コンポーネントは、props を通じて親コンポーネントの値を子コン...

XHTML チュートリアル、XHTML の基礎を簡単に紹介します

<br />この記事では、XHTMLとXHTMLの基礎知識について簡単に紹介します。 X...