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

推薦する

aタグのhref属性とonclickイベントの比較

まず、href 属性と onclick イベントの実行順序について説明します。マウスが a タグをク...

nginx プロキシでの複数の 302 応答の解決策 (nginx Follow 302)

proxy_intercept_errors と recursive_error_pages を使...

Vue で計算プロパティを使用する際の知識ポイントのまとめ

計算されたプロパティ場合によっては、テンプレートにロジックを詰め込みすぎると、テンプレートが重くなり...

Linuxコマンドをバックグラウンドで実行する方法

通常、ターミナルでコマンドを実行する場合、別のコマンドの入力を開始する前に、現在のコマンドが終了する...

10分で始めるCSS3アニメーション

導入アニメーションを使用すると、JavaScript や jQuery に依存せずに、純粋な CSS...

Apache POIの基本的な使い方の詳しい説明

目次基本的な紹介入門テスト (Excel ファイルからのデータの読み取り)ステップ1: Maven座...

Vue2.x プロジェクトのパフォーマンス最適化のためのコード最適化の実装

目次1 v-ifとv-showの使用2. 計算と監視を区別する3 v-for トラバーサルでは、アイ...

MySQLは実際に分散ロックを実装できる

序文前回の記事では、eコマース シナリオでのフラッシュ セールの例を通じて、モノリシック アーキテク...

HTML サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。定義と使用法: <...

nginx+WordPressで個人ブログを構築するプロセス全体の詳細な説明

0x00 はじめにWordPress は、世界で最も人気のある CMS システムです。PHP と M...

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

CentOS のクローン作成、Linux 仮想マシンの共有の完全な手順

序文Linux が完全にセットアップされると、クローン機能を使用して短時間で複数の Linux を作...

Ubuntu16.04にCUDA9.0をインストールするための詳細なチュートリアル

序文:この記事は、CUDA 9.0 をインストールした経験に基づいています。CUDA 9.0 は現在...

階段を転がす特殊効果を実現する JavaScript (jQuery 実装)

皆さんもJDを使ったことがあると思います。ホームページには非常によく見られる機能があります。階段の特...

Vueのドラッグスクリーンショット機能を実装する簡単な方法

マウスをドラッグしてページのスクリーンショットを撮ります(指定した領域にスクリーンショットをドラッグ...