MySQLの重複排除方法

MySQLの重複排除方法

MySQLの重複排除方法

【初級】繰り返しのセリフが少ない

distinctive を使用してそれらを見つけ出し、手動で 1 つずつ削除します。

[中級] 単一のフィールドに基づいて重複を削除する

例: IDフィールドから重複を削除する

使用方法: id の繰り返しフィールドの値を取得し、同じ id フィールドを持つ行内の異なるデータを持つフィールドを比較し、最小 (または最大) フィールドを持つ行を除くすべての繰り返し行を削除します。通常、主キーの値は一意で、完全に異なる必要があるため、比較には主キーが使用されます。

ID名

1人

1b

2 カップ

2人

3 週

結果:

ID名

1人 

2人

操作:

a_tmpから削除 

id が (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb) にある場合 

そして、名前は (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa) に含まれません。

知らせ:

上記の太字と緑色の単語にはエイリアスを付け、select * from (……) 形式を使用する必要があります。そうしないと、エラーが報告されます。

[エラー] 1093 - FROM句で更新のターゲットテーブル 'a_tmp' を指定することはできません

[詳細] 複数のフィールドの繰り返しによる重複を削除する

たとえば、同じIDと名前の重複を削除するには、つまり、同じIDと名前を重複行としてカウントし、同じIDだが名前が異なるものを重複しない行としてカウントします。

使用法: 単一のフィールドと同様に、主キーの値は一意である必要があるため、主キーは通常、比較に使用されます。

ID名 ROWID

1a1

1 2

1b3 ...

2b4 ...

2b5 ...

3c6

3d7

結果:

ID名 ROWID

1a1 

1b3 ...

2b4 ...

3c6

3d7

操作:

最初のもの:

a_tmpから削除 

(id,name) が (select * from (select b.id,b.name from a_tmp b group by b.id,b.name having count(b.id) >1) bb) にある場合 

かつ rowid が (select * from (select min(a.rowid) from a_tmp a group by a.id,a.name having count(a.id) >1) aa) に含まれません。

2番目のタイプ:

idフィールドとnameフィールドの値を連結し、一時テーブルb_tmpに挿入します。その後、[中級]単一フィールド判定および削除方法を使用できます。

#接続された2つのフィールドの値と、a_tmpテーブル内の一意の値を持つフィールドをb_tmpテーブルに挿入します

b_tmpに挿入 

 a_tmp から concat(id,name),rowid を選択します。

#保持する必要がある行を見つける select id_name,max(rowid)

 b_tmpから 

 id_nameでグループ化

 count(id_name)>1である;

#[中間]メソッドまたはストアドプロシージャを使用して重複排除作業を完了します

[究極] 各行には同じデータのコピーが2つあります

例えば:

使用方法: 行全体のデータが同じである場合、1 つの行を保持してすべての同一行を削除するために使用できる条件付き制限がないため、SQL ステートメントを使用してそれを削除することはできません。自分で作成できるさまざまなフィールドはありません。つまり、フィールドを追加し、自動増分に設定し、主キーとして設定すると、値が自動的に追加されます。

ID名

1人

1人

1b ...

1b ...

2 カップ

2 カップ

3 週

3 週

結果:

ID名 ROWID

1a1

1b3 ...

2 5 頁

3 c 7

操作:

自動インクリメント フィールドを追加し、一時的に主キーとして設定します。

上記の[中級]および[上級]の方法を使用します。

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL 開発スキル: JOIN 更新とデータ重複チェック/重複排除
  • MySQLデータの重複チェックと重複排除の実装ステートメント
  • 1つのSQL文でMySQLの重複排除が完了し、1つが保持されます。
  • SQL データベースにおける重複排除についての簡単な説明
  • 重複を削除するSQLグループ化と並べ替えの小さな例
  • MySQL における重複排除の 2 つの方法とサンプル コードの詳細な説明
  • 重複SQLのチェックと削除方法の実践記録

<<:  CentOS7 デプロイメント Flask (Apache、mod_wsgi、Python36、venv)

>>:  Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明

推薦する

Linux での SSH 非秘密通信の実装

SSHとは何か管理者はリモートでログインして、インターネット経由で接続されたさまざまな場所にある複数...

知らないかもしれないmysqldumpパラメータ

前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...

セマンティックHTML構造を理解する方法

HTML と CSS は誰もが知っていると思います。HTML の構造と CSS の表現の分離も知って...

Vue はカードフリップカルーセル表示を実装します

Vueカードのフリップカルーセル表示、フリップ時にデータを切り替えながら、参考までに、具体的な内容は...

Windows で複数の MySQL インスタンスを実行する方法

序文Windows では、各インスタンスに適切なパラメータを使用してコマンド ラインから複数の My...

Linux での tcpdump コマンド例の詳細な説明

序文簡単に言えば、tcpdump は、ネットワーク上のトラフィックをダンプし、ユーザーの定義に従って...

ロンボク実装 JSR-269

序文導入Lombok は、Google Guava と同様に便利なツールであり、強くお勧めします。す...

CentOS 7 で MySQL 5.7 をインストールして設定する

この記事では、以下の環境をテストします。 CentOS 7 64 ビット 最小 MySQL 5.7 ...

CSS画像結合技術(スプライト画像)の詳しい説明

CSS画像結合技術1. 画像のステッチ画像ステッチング技術は、個々の画像を収集する技術です。画像の多...

vue3+electron12+dll 開発のためのクライアント構成の詳細な説明

目次リポジトリソースを変更する起動するvue-devtoolsを置き換える予防ボーダーレスウィンドウ...

MySQL における varchar 型と char 型の違い

目次前述のVARCHAR型VARCHAR適用可能な状況CHAR型テストVARCHAR(5)とVARC...

水平スクロールバーを実装する2つの方法の例

序文:プロジェクトの開発中に、1 行にナビゲーション バーが多すぎる場合に水平スクロール バーを実装...

mysqlを使用して、URLから返されたhttp GETリクエストデータを記録します。

ビジネスシナリオの要件と実装ロジックの分析ビジネスでは、HTTP GET を使用してデータを要求する...

シンプルなデータ応答システムを実装する

目次1. デップ2. 観察者を理解する3. 監視と観察者を理解する4. トリガーの依存性5. プロセ...

MySQL はエンタープライズレベルのログ管理、バックアップ、リカバリの実践的なチュートリアルを実装します

背景事業が発展するにつれ、会社の事業内容や規模は拡大し続け、ウェブサイトには大量のユーザー情報やデー...