重複した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はルート権限を取得し、ルートユーザーとしてログインします

推薦する

mysql5.7.18.zip インストール不要版設定チュートリアル(Windows)

これは私が以前使用した mysql5.7.18.zip のインストール チュートリアルです。まずこれ...

レスポンシブ原則のソースコード分析のVue解釈

目次初期化初期化状態()初期化プロパティ()初期化データ()観察する()オブザーバーリアクティブを定...

JavaScript es6 の新しい配列メソッドの詳細な説明

目次1. 各() 2. arr.filter() 3. arr.every() 4. arr.map...

Vueはカウントダウン機能を実装する

この記事の例では、カウントダウン機能を実装するためのVueの具体的なコードを参考までに共有しています...

MySQL 8.0.11 圧縮版のインストールチュートリアル

この記事では、MySQL 8.0.11のインストールチュートリアルを参考までに紹介します。具体的な内...

Linux ファイル/ディレクトリの権限と所有権の管理

1. ファイルの権限と所有権の概要1. アクセス権Read r: ファイルの内容を表示し、ディレクト...

JavaScript 配列重複排除ソリューション

目次方法1: set: データ型ではなくデータ構造であり、メンバーは一意である方法2: オブジェクト...

Uniapp は DingTalk スキャンコード ログイン サンプル コードを実装します

UniappにはDingTalk認証ログインがないため、この記事ではDingTalk QRコードログ...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

MySQL データベース監視ソフトウェア lepus の使用上の問題と解決策

lepus3.7 を使用して MySQL データベースを監視中に、次の問題が発生しました。このブログ...

Linux に JDK1.8 をインストールするための詳細なチュートリアル

1. 設置前の清掃 rpm -qa | grep jdk rpm -qa | grep gcj yu...

Vue.jsフレームワークはショッピングカート機能を実装します

この記事では、ショッピングカートを実装するためのVue.jsフレームワークの具体的なコードを参考まで...

threejs でリアルタイムポリゴン屈折を実装する方法

目次序文ステップ1: セットアップと前方屈折ステップ2: 反射とフレネル方程式ステップ3: 多面屈折...