1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント

1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント

SQLはテーブル内の重複レコードをすべて見つけます

1. テーブルには id と name の 2 つのフィールドがあります。重複する名前を持つすべてのデータを検索します。

 xi a から * を選択します。ここで (a.username) です (xi グループからユーザー名を選択します。ユーザー名は count(*) > 1 を持ちます)

2. すべてのデータを検索してグループ化した後、繰り返しデータの繰り返し回数のクエリ データが最初にリストされます。

 select count(username) as '繰り返し回数',username from xi group by username having count(*)>1 order by username desc

3. 他の人の結果を表示するには、重複レコードを照会および削除する方法は次のとおりです。

1. テーブル内の重複レコードを検索します。重複レコードは単一のフィールド (peopleId) に基づいて決定されます。

 人から*を選択
peopleId が (count(peopleId) > 1 を持つ peopleId で people グループから peopleId を選択)

2. テーブル内の冗長な重複レコードを削除します。重複レコードは、単一のフィールド (peopleId) に基づいて決定されます。最小の rowid を持つレコードのみが保持されます。

 人から削除する 
peopleId が (count(peopleId) > 1 を持つ peopleId で people グループから peopleId を選択)
行IDが含まれていません(count(peopleId)>1を持つpeopleIdでpeopleグループからmin(rowid)を選択)

3. テーブル内の重複レコードを検索する(複数のフィールド)

 履歴書Aから*を選択
(a.peopleId、a.seq) が (count(*) > 1 を持つ peopleId、seq で vitae グループから peopleId、seq を選択) にある場合

4. テーブル内の重複レコード(複数のフィールド)を削除し、最小のROWIDを持つレコードのみを残します。

 履歴書から削除
(a.peopleId、a.seq) が (count(*) > 1 を持つ peopleId、seq で vitae グループから peopleId、seq を選択) にある場合
ROWID が (count(*)>1 を持つ peopleId、seq による vitae グループから min(rowid) を選択) に含まれません

5. テーブル内の重複レコード(複数のフィールド)を検索し、最小のROWIDを持つレコードを除外する

 履歴書Aから*を選択
(a.peopleId、a.seq) が (count(*) > 1 を持つ peopleId、seq で vitae グループから peopleId、seq を選択) にある場合
ROWID が (count(*)>1 を持つ peopleId、seq による vitae グループから min(rowid) を選択) に含まれません

(二)

例えば

テーブル A には「名前」フィールドがあります。

また、異なるレコード間の「名前」値は同じになる場合があります。

ここで、テーブル内のレコードの中で重複した「名前」値を持つ項目を見つける必要があります。

 名前とカウント(*)を、カウント(*) > 1 を持つ名前でグループから選択します。

性別が同じ場合、結果は次のようになります。

 名前、性別、カウント(*)が1より大きいグループから名前、性別、カウント(*)を選択します

(三つ)

方法1

@max 整数、@id 整数を宣言します
cur_rowsカーソルをローカルに宣言する 
テーブル名からプライマリフィールド count(*) を選択し、プライマリフィールド count(*) でグループ化します >;
cur_rows を開き、@id、@max に cur_rows をフェッチします (@@fetch_status=0)
始める
 @max = @max -1 を選択
 行数を@maxに設定
 プライマリフィールドが @id であるテーブル名から削除します
cur_rows を @id,@maxend に取得します
cur_rowsを閉じる
行数を0に設定

方法 2: 重複レコードには 2 つの意味があります。1 つは完全に重複したレコード、つまりすべてのフィールドが繰り返されているレコードです。もう 1 つは、一部のキー フィールドが繰り返されているレコードです。たとえば、名前フィールドが繰り返され、他のフィールドは繰り返されない可能性があり、繰り返されているすべてのフィールドを無視できます。

1. 最初のタイプの繰り返しは、解決が簡単です。

 テーブル名から別の*を選択

重複レコードのない結果セットを取得できます。

テーブルから重複レコードを削除する必要がある場合(重複レコードを1つだけ保持する)、

次のように削除できます

 tableName から #Tmp に distinct * を選択
テーブルテーブル名を削除します
#Tmp から tableName に * を選択
テーブル #Tmp を削除します

この重複はテーブルの設計が不適切であるために発生し、一意のインデックス列を追加することで解決できます。

2. このタイプの重複問題では、通常、重複レコードの最初のレコードを保持する必要があります。操作方法は次のとおりです。重複フィールドが名前と住所であり、これら 2 つのフィールドに対して一意の結果セットを取得する必要があると仮定します。

 autoID として identity(int,1,1) を選択し、* を #Tmp に tableName から入力します。
名前、自動ID で #Tmp グループから min(自動ID) を自動 ID として #Tmp2 に選択します。
#Tmp から * を選択し、autoID が in であることを確認します (#tmp2 から autoID を選択)

最後の選択では、一意の名前とアドレスを含む結果セットが返されます (ただし、追加の autoID フィールドが含まれますが、これは書き込み時に選択句で省略できます)。

(IV) 重複クエリ

 select * from tablename where id in (select id from tablenamegroup by idhaving count(id) > 1)

フィールドの重複レコードを検索する

sample_code フィールドに基づいて重複レコードを検索する

SELECT * FROM tb_table WHERE sample_code IN( SELECT sample_code FROM tb_table GROUP BY sample_code HAVING COUNT(sample_code) > 1 );

複数のフィールドの重複レコードを検索します(ここでは 2 を例に挙げます)

名前とコードフィールドに基づいて重複レコードを検索する

SELECT * from (SELECT *, CONCAT(name,code) as nameAndCode from tb_table) t WHERE t.nameAndCode in 
(
 SELECT nameAndCode from (SELECT CONCAT(name,code) as nameAndCode from tb_table) tt GROUP BY nameAndCode HAVING count(nameAndCode) > 1
)

要約する

上記は、1 つ以上のフィールドに基づいて重複データを検索するために紹介した MySQL SQL ステートメントです。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQLテーブル内の重複レコードを見つける
  • MySQLで重複データを見つけて削除し、1つの例だけを残す方法の詳細な説明
  • MySQLテーブル内の重複データをクエリする方法
  • MySQLデータベース内の重複データを削除する方法の概要
  • MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)
  • 重複データを処理するための非常に包括的なMySQLコード
  • MySQL データベース内の重複レコードを削除する方法のまとめ [推奨]
  • MYSQLにデータを挿入する際に重複データを無視する方法を共有する
  • MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する
  • 重複したMySQLレコードを現場でチェックし、処理する実践的な記録

<<:  Linux (Ubuntu) ユーザーがログイン時に N 回連続して間違ったパスワードを入力すると、システムは自動的に X 分間ロックされます。

>>:  自動ロック画面機能を実現するjs

推薦する

CentOS7 は rpm を使用して MySQL 5.7 をインストールするチュートリアル図

1. 4つのrpmパッケージをダウンロードする mysql-コミュニティクライアント-5.7.26-...

Ubuntu 18.04 は mysql 5.7.23 をインストールします

以前、Ubuntu 16.04 に MySQL をスムーズにインストールしました。今回、Ubuntu...

HTML文書の基本構造(Webページ作成の基礎知識)

HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...

Linux のスケジュールされたタスクの crontab のインストールと使用の詳細な説明

crontabをインストールするyum install crontabs CentOS 7が付属して...

jsはフォーム検証機能を実装します

この記事の例では、フォーム検証機能を実装するためのjsの具体的なコードを参考までに共有しています。具...

MySQL マスタースレーブレプリケーションのいくつかのレプリケーション方法の概要

非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...

MySQL テーブル構造を Excel にエクスポートする方法

要件は次のとおりですテーブル構造、フィールドコメント情報、テーブル名などをエクスポートします。これは...

Vue ソング プログレス バーのサンプル コード

なお、これはvue-cliで作成したプロジェクトではありません。vue.jsを参照して記述したHTM...

MySQL ファジークエリステートメントコレクション

SQL ファジークエリステートメント一般的なファジーステートメントの構文は次のとおりです。 SELE...

Deepin Linuxでカーネルを手動でアップグレードする方法

deepinとUbuntuどちらもdebianをベースにしたディストリビューションであり、ここではU...

Vue-cliに基づくコードセットは複数のプロジェクトをサポートします

目次アプリケーションシナリオアイデアプロジェクト構造全体的なプロジェクト構造webpack パッケー...

Nginx リバース プロキシ構成の完全なプロセス記録

1. 準備LinuxシステムにTomcatをインストールし、デフォルトのポート8080を使用してTo...

CentOS 6 および 7 での MySQL 5.7 の詳細なインストール チュートリアル

開発には常にデータが必要です。サーバーとしての Linux では、テスト データを格納するためのデー...

Java は Excel から MySQL にデータをインポートします

実際の業務では、Excel からデータベースにデータをインポートする必要がある場合があります。データ...

HTML タグのネスト規則の紹介

XHTML タグには、div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、s...