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

推薦する

JSは写真の自動再生効果を実現します

この記事では、写真の自動再生効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な...

MySQLオンラインDDLの使用に関する詳細な説明

目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...

WeChat公式アカウントでReactプロジェクトを実行する方法

目次1. a タグを使用して PDF をプレビューまたはダウンロードします。書き方は、携帯電話でクリ...

カルーセルの制作方法を実現するjs

この記事では、カルーセル画像の表示を実現するためのjsの具体的なコードを参考までに共有します。具体的...

要素UIポップアップコンポーネントをカプセル化する手順

el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...

HTMLの表のtbodyは上下左右にスライドできます

テーブル ヘッダーが固定されている場合は、それを 2 つのテーブルに分割する必要があります。1 つの...

CentOS 7.5 に Python 3.6.6 を最初からインストールするための詳細なチュートリアル

ps: 環境はタイトル通りです依存関係をインストールする yum インストール openssl-de...

JavaScriptは、ユーザーがチェックボックスをオンにする必要があるプロトコルの例を実装します。

js では、ログインまたは登録を確認する前に、ユーザーが特定の契約書を読むように設定します (使用...

JavaScript のマクロタスクとマイクロタスクの詳細

目次1. マイクロタスクとは何ですか? 2. マクロタスクとは何ですか? 3. 事例3.1 結論4....

Linux で AIDE に基づいてファイルシステムの整合性を検出する方法

1. 補助AIDE (Advanced Instruction Detection Environm...

CSS3 で複数のカスタムフォントを導入する

今日、HTML に問題を発見しました。多くのデフォルト フォントが提供されていますが、「Bold」、...

dockerでデプロイされたjenkinsでgitプログラムを実行する際の問題について

1. まず、gitを関連付けるときにエラーメッセージが報告されます: エラー: ビルドするリビジョン...

HTML でナンバープレート番号と州の略語を入力するためのサンプルコード

原理としては、まずボタン付きの div を記述し、次に画面のサイズに応じて自動的に適応してキーボード...

Pythonで書かれたWebアプリケーションをDockerでデプロイする実践

目次1. Dockerをインストールする2. コードを書く3. Dockerfileを書く4. 画像...

RHEL7.5 mysql 8.0.11 インストールチュートリアル

この記事はRHEL7.5でのMySQL 8.0.11のインストールチュートリアルを記録しています。具...