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

推薦する

type=fileファイル変更フォームの名前が正常にエコーされない問題を解決

easyui フレームワークのコードは次のとおりです。 css: .ファイルボックス{ フロート:...

Windows 10 での MySQL 5.7.19 インストール チュートリアル MySQL のルート パスワードを忘れた場合の変更方法

MySQL 5.7.19のインストールを例に挙げると、まずダウンロードしますもちろん、最初に行うこと...

MySQL の lru リンク リストの簡単な分析

1. 従来のLRUリンクリストについて簡単に説明するLRU:最も最近使われなかったものLRU リンク...

Vue+Bootstrapでシンプルな学生管理システムを実現

参考までに、vueとbootstrapを使って比較的シンプルな生徒管理システムを作りました。具体的な...

Vue プロジェクトにおけるトランジション コンポーネントの適用の概要

​Vue のトランジションは、アニメーション トランジションをカプセル化するコンポーネントです。一般...

Docker環境を構築する簡単な方法

まず、Docker とは何かを理解しましょう。 Docker は、アプリケーションをデプロイするため...

Linux で複数のファイルの名前を一度に変更する方法

序文日常業務では、すべての jpg ファイルを bnp に変更したり、名前の 1 を one に変更...

Linux で TCP 接続の最大数をテストする方法

序文TCP サーバの最大同時接続数に関して、「ポート番号の上限が 65535 であるため、TCP サ...

CnBlogs カスタムブログスタイルの共有

半夜かけてようやくブログのスタイルを大体完成させることができました。ブログ全体が青を基調としていて、...

Linuxブートサービスを起動する2つの方法

目次rc.local メソッドchkconfig メソッドrc.local メソッド1 まず自動的に...

CSS オーバーフローラップの新しいプロパティ値をどこでも使用

1.まず、overflow-wrap属性を理解する CSS のoverflow-wrapプロパティは...

HTML の入力の readonly 属性と disabled 属性の違いについて簡単に説明します。

「読み取り専用」と「無効」はどちらも、ユーザーがフォーム フィールドの内容を変更できないようにしま...

プロジェクトの再構築からプロジェクトにおける CSS3 カスタム変数の使用について話す

CSS3変数について変数を宣言するときは、変数名の前に 2 つのハイフン ( -- ) を追加します...

vue-routeルーティング管理のインストールと設定方法

導入Vue Router 、 Vue.jsの公式ルーティング マネージャーです。 Vue.jsのコア...

W3C チュートリアル (4): W3C XHTML アクティビティ

HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...