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

ブログ    

推薦する

JavaScript におけるさまざまなバイナリオブジェクトの関係の詳細な説明

目次序文さまざまなオブジェクト間の関係配列バッファ型付き配列Uint8ClampedArray文字間...

JavaScript デザインパターンの学習 アダプタパターン

目次概要コードの実装要約する概要アダプタ パターンは、デザイン パターンの動作パターンのパターンです...

HTML と CSS を使用して絵文字付きのコメント ボックスを作成する方法のチュートリアル

絵文字付きの HTML コメント ボックス。絵文字は Json データを通じて読み込まれ、好みに応じ...

Echarts は 1 つのグラフ内で異なる X 軸を切り替える機能を実装します (サンプル コード)

レンダリング下の画像のような効果を実現したい場合は、読み続けてアニメーション画像に直接進んでください...

ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析

<br />緑は黄色と青(寒色と暖色)の中間の色で、より穏やかな色です。そのため、緑は最...

Nginx ストリーム構成プロキシ (Nginx TCP/UDP ロード バランシング)

序章nginx が優れたリバース プロキシ サービスであることは誰もが知っています。nginx を使...

Nginx に React プロジェクトをデプロイする方法の例

テストプロジェクト: react-demo react-demo プロジェクトをサーバーにクローンし...

MySQL での replace と replace into の使い方の説明

MySQL の replace と replace into はどちらも頻繁に使用される関数です。r...

VMware10 での CentOS 7 のインストールと設定のチュートリアル

Ubuntu が今日のデスクトップ ユーザーの間で最も人気のある Linux オペレーティング シス...

Dockerfile における ENV 命令の具体的な使用法の詳細な説明

1. Dockerfile 内の ENV 命令は、イメージの環境変数を定義するために使用されます。次...

MySql の知識ポイント: トランザクション、インデックス、ロックの原則、使用状況の分析

この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法...

Linux の PHP に XML 拡張機能をインストールする詳細な手順

PHP Linux に XML 拡張機能をインストールする1. PHPインストールソースパッケージを...

CSS 完全な視差スクロール効果

1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...

NavicatでMySQLビッグデータをインポートする際のエラーの解決方法

Navicat がエクスポートしたデータはインポートできません。最後に、MySQLコマンドのインポー...

MYSQL サブクエリとネストされたクエリの最適化例の分析

ゲーム史上最高スコアトップ100をチェックSQLコード cdb_playsgame ps から ps...