序文 この記事では主に、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.Linuxログインインターフェース2. コードを書く3. Makefileを書く4. コンパ...
この記事では、モバイル署名機能を実装するためのJavaScriptの具体的なコードを参考までに共有し...
この記事では、Gobangゲームを実装するためのキャンバスの具体的なコードを参考までに共有します。具...
目次序文SQL文の最適化遅いクエリSQLを記録する設定を変更する方法スロークエリログを表示するSQL...
Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...
1 効果デモアドレス: https://www.albertyy.com/2020/7/check...
1. はじめにDocker には、タスクを構成する複数の Docker コンテナをオーケストレーショ...
forループfor ループは配列の要素をループします。文法: for (初期化変数; 条件式; 繰り...
この記事では、Vueカウンターの簡単な実装コードを例として紹介します。具体的な内容は以下のとおりです...
企業の Web サイト、個人のブログ、ショッピング Web サイト、ゲーム Web サイトなど、どの...
目次グローバル登録部分登録ローカル自動登録さまざまなソリューションの比較コンポーネント名について参照...
ローカル環境はWindows10+WSL2(Ubuntu)です。サーバーにDockerをインストール...
まずデータ テーブルを作成しましょう。 使用テスト; テーブル「従業員」を作成します( emp_no...
背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...
MySQL サーバーをシャットダウンする場合、シャットダウン方法に応じてさまざまな問題が発生する可能...