重複したMySQLテーブルをマージして削除する簡単な方法

重複したMySQLテーブルをマージして削除する簡単な方法

シナリオ:

クロールされたデータは、別のメインテーブルと同じ構造を持つデータテーブルを生成するため、マージして重複を排除する必要があります。

解決策: (直接的な例)

まず、pepとpep2の2つのテーブルを作成します。pepはメインテーブルです。

存在しない場合はテーブルを作成 `pep/pep2`(
`id` INT UNSIGNED AUTO_INCREMENT、
`no` VARCHAR(100) NOT NULL、
主キー ( `id` )
)ENGINE=InnoDB デフォルト文字セット=utf8;

次に、2つのデータをpepに挿入し、pepと同じデータをpep2に挿入します。

pep(no) に値 ('abc') を挿入します。
pep(no) values('caa') に挿入します。

pep2(no) に値('abc') を挿入します。

pep2データをpepに挿入する

pepに挿入(no) pep2からnoを選択します。

新しい一時テーブル tmp を再作成するグループ

テーブル tmp を作成し、pep から id,no を group by no で選択します。

注:このテーブルを作成すると、IDフィールドタイプは主キーの自動増分ではなくなります。

 「構文エラーまたはアクセス違反: 1055 SELECT の式 #1」というエラーが表示される場合もあります。 
 リストはGROUP BY句に含まれておらず、非集約型が含まれています 
 機能的に依存していない列「XXX.Y.ZZZZ」 
 GROUP BY句の列。これは、
 sql_mode=グループごとにのみフル
 「」
 解決策: 次の 2 つのコマンドを実行します。
 「」
 mysql> グローバル sql_mode を 'STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION' に設定します。
 
 mysql> セッション sql_mode を 'STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION' に設定します。
 「」

pepテーブルを削除し、tmpテーブルの名前をpepに変更します。

テーブルペップを落とす;
テーブル tmp の名前を pep に変更します。

desc 構造を確認し、pep から * を選択すると、id のフィールド タイプが変更されていることがわかります。元のタイプに戻す必要があります。

テーブル pep を変更して主キー (id) を追加します。
テーブルを変更して、ID を int auto_increment に変更します。

結合を使用して重複を削除することもできます。処理を高速化するには、フィールド (複数のフィールドを組み合わせた md5 値) を追加し、このフィールドに固有のインデックスを作成し、将来データを挿入するときに重複データを自動的に除外します。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • SQL における 3 つの重複排除方法の概要
  • MySQL で distinct メソッドを使用する詳細な例
  • MySQLの重複排除操作を極限まで最適化する方法
  • MySQLの重複排除方法
  • MySQL における重複排除の 2 つの方法とサンプル コードの詳細な説明
  • SQL学習ノート5:重複を削除して新しく追加されたフィールドに値を割り当てる方法
  • SQL重複排除方法の概要

<<:  Vueのフロントエンドとバックエンドのポートの不一致の問題を解決する

>>:  Ubuntu 18.04はルート権限を取得し、ルートユーザーとしてログインします

推薦する

MySQL での varchar 型の日付の比較、並べ替え、その他の操作の実装

MySQL を使用する場合、日付は通常、datetime や timestamp などの形式で保存さ...

Centos8 の Django プロジェクトに nginx+uwsgi をデプロイするチュートリアル

1. 仮想環境virtualenvのインストール1. virtualenvをインストールするpip3...

mysql 5.6.21 のインストールと設定の詳細な手順

1. 概要MySQL バージョン: 5.6.21ダウンロードアドレス: https://dev.my...

Vue フロントエンドで PDF を生成してダウンロードする方法

目次1. インストールと導入2. PDFファイルをパッケージ化してエクスポートする方法構成の詳細PD...

Nginx の Docker インストールの問題とエラー分析

質問: DockerにNginxをインストールするときに次のエラーが発生しました: docker: ...

ES6分解課題の原理と応用

目次配列分割代入オブジェクトの分解代入分割割り当ての適用変数の値の交換関数から複数の値を返すマップ構...

Linuxでkv設定ファイルを変更するにはsedコマンドを使用します

sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...

ReactのsetStateがマクロタスクなのかマイクロタスクなのかについて詳しく話しましょう

目次序文面接官は適切な質問をしていますか? § React は setState をどのように制御し...

JavaScript で支払いの 10 秒カウントダウンを実現

この記事では、支払いの10秒カウントダウンを実現するためのJavaScriptの具体的なコードを参考...

LinuxでのMySQLのインストール手順

1. mysql tar ファイルをダウンロードします。参考: 2. インストールパッケージがあるデ...

JavaScript Canvas は動的なワイヤーフレーム効果を描画します

この記事では、JavaScript Canvasの動的なワイヤーフレーム効果を描画する具体的なコード...

MYSQLの文字セット設定方法(端末の文字セット)の詳しい説明

序文ターミナルを使用してデータベースまたはテーブルを作成するたびに、文字セットが latin1 であ...

ふるい抽選を実施するミニプログラム

この記事の例では、ふるい抽選を実装するためのミニプログラムの具体的なコードを参考までに共有しています...

Eclipseを使用してMySQLデータベースに接続する方法を説明します

序文常にエラーが発生するため、MySQL データベースに接続するプロセスを記録します。接続プロセス1...

MySQL 8.0.12 の詳細なインストールおよびアンインストール チュートリアル

1. MySQL 8.0.12 バージョンのインストール手順。 1. ダウンロードhttps://d...