序文 この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のために共有します。詳細な紹介を見てみましょう。 重複するタイトルを持つすべてのレコードを検索します。 user_table から title,count(*) を count として選択し、count>1 を持つ title でグループ化します。 SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC 1. 重複レコードを見つける 1. 重複レコードをすべて検索する SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC 2. 重複レコードをフィルタリングする(1つだけ表示される) ID が含まれた HZT から * を選択 (タイトル別に HZT グループから最大 (ID) を選択) 注: これはIDが最も大きいレコードを表示します 2.重複レコードを削除する 1. 重複レコードをすべて削除します(注意して使用してください) 繰り返しフィールドがあるテーブルを削除します (テーブルから繰り返しフィールドを選択します。繰り返しフィールドでグループ化します。カウント(*)>1 を持つ) 2. 1 つ保持します (ほとんどの人はこれが必要です^_^) ID が含まれない HZT を削除します (タイトル別に HZT グループから最大 (ID) を選択) 注:最も大きなIDを持つレコードがここに保持されます 3. 例 1. テーブル内の重複レコードを検索します。重複レコードは単一のフィールド (peopleId) に基づいて決定されます。 peopleId が in である people から * を選択します (count(peopleId) > 1 を持つ peopleId で people グループから peopleId を選択) 2. テーブル内の冗長な重複レコードを削除します。重複レコードは、単一のフィールド (peopleId) に基づいて決定されます。最小の rowid を持つレコードのみが保持されます。 peopleId が (count(peopleId) > 1 を持つ peopleId で people グループから peopleId を選択) かつ rowid が (count(peopleId) > 1 を持つ peopleId で people グループから min(rowid) を選択) ではない people から削除します。 3. テーブル内の重複レコードを検索する(複数のフィールド) 履歴書 a から * を選択します。ここで (a.peopleId、a.seq) です (履歴書から peopleId、seq を選択し、count(*) > 1 である peopleId、seq でグループ化します) 4. テーブル内の重複レコード(複数のフィールド)を削除し、最小のROWIDを持つレコードのみを残します。 履歴書 a から、(a.peopleId、a.seq) が (select peopleId、seq from vitae group by peopleId、seq having count(*) > 1) に含まれ、rowid が (select min(rowid) from vitae group by peopleId、seq having count(*)>1) に含まれない場所を削除します。 5. テーブル内の重複レコード(複数のフィールド)を検索し、最小のROWIDを持つレコードを除外する vitae a から * を選択します。ここで、(a.peopleId、a.seq) は (select peopleId、seq from vitae group by peopleId、seq having count(*) > 1) に含まれ、rowid は (select min(rowid) from vitae group by peopleId、seq having count(*)>1) に含まれません。 4. 補足 重複レコードが 2 つ以上あります。1 つは完全に重複したレコード、つまりすべてのフィールドが重複しているレコードです。もう 1 つは、一部のキー フィールドが重複しているレコードです。たとえば、名前フィールドが重複していますが、他のフィールドは重複していないか、重複していても無視できます。 1. 最初のタイプの繰り返しは、解決が簡単です。 テーブル名から別の*を選択 重複レコードのない結果セットを取得できます。 テーブルから重複レコードを削除する必要がある場合 (重複レコードを 1 つだけ保持する場合)、次のように削除できます。 tableName から #Tmp に distinct * を選択 テーブルテーブル名を削除します #Tmp から tableName に * を選択 テーブル #Tmp を削除します この重複はテーブルの設計が不適切であるために発生し、一意のインデックス列を追加することで解決できます。 2. このタイプの重複問題では、通常、重複レコードの最初のレコードを保持する必要があります。操作方法は次のとおりです。 Name と Address という名前の繰り返しフィールドがあり、これら 2 つのフィールドに対して一意の結果セットを取得したいとします。 autoID として identity(int,1,1) を選択し、* を #Tmp に tableName から入力します。 名前、自動ID で #Tmp グループから min(自動ID) を自動 ID として #Tmp2 に選択します。 #Tmp から * を選択し、autoID が in であることを確認します (#tmp2 から autoID を選択) 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。 以下もご興味があるかもしれません:
|
<<: Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明
1. まず、VS2019とMySQLデータベースを準備します。どちらも公式サイトからダウンロードで...
この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考...
目次序文コンポーネントの作成要約する序文Vue3 には多くの注目すべき機能が追加されましたが、サスペ...
序文Excel は強力で、広く使用されています。 Web アプリケーションの登場と改善に伴い、ユーザ...
従来のソフトウェアから Web ウェアへの段階的な移行の傾向の中で、デザイン パターンとテクノロジは...
概要今日は主に、MySQL データベースから binlog ログを正しく削除する方法を紹介します。ロ...
目次単一コンテンツ投影マルチコンテンツ投影単一条件のコンテンツ投影アプリ-人物-htmlアプリ担当者...
どの企業もユーザーベースを拡大したいのであれば、ユーザーの操作データを収集・分析する必要があり、その...
サーバーの構築には node.js を選択しました。まだインストールしていない方は、私の他の nod...
MySQL はインストール時に自動的に mysql という名前のデータベースを作成します。mysql...
目次MySQL マスタースレーブ同期原理の簡単な分析1. マスタースレーブとは何ですか? 2. 主従...
TensorFlow をディープラーニングに使うとビデオメモリ不足がよく起こるので、GPU 使用状況...
tomcat の web.xml を構成する場合、サーブレットは比較的重要な問題です。ここでは、サー...
目次問題の原因:解決:解決:私は Centos7 を使用しています (理論的にはこの方法は Cent...
大学院入試に備えて、C/C++ を使って基本的なデータ構造とアルゴリズムを実装する予定です。アルゴリ...