序文 この記事では主に、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. インストールパッケージの準備VMware-player-15.0.4-12990004、非商...
目次MySQL ログファイルバイナリログBinlogログがオンになっていますログ記録を有効にする方法...
目次プラグインとはプラグインの作成プラグインの使用要約するプラグインとはVue フレームワークでは、...
1. 要件Vue.js フレームワークを使用してフロントエンド プロジェクトを開発する場合、サーバ...
この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...
目次差分アルゴリズムレイヤーごとの比較同じタイプのコンポーネントを比較する同じタイプの要素の比較子ノ...
MySQLのマスタースレーブ構成と原理、参考までに具体的な内容は以下のとおりです。 1. 環境の選択...
黄金律プロジェクトに何人の人が取り組んでいるかに関係なく、すべてのコード行が同じ人によって書かれたよ...
序文NFS (Network File System) は、ネットワーク ファイル システムを意味し...
序文Ahhang が Springboot プロジェクトを開発していたとき、フロントエンドから検証コ...
1. MySQL マスター/スレーブ同期とは何ですか?マスター データベースのデータが変更されると、...
1. Dockerfile 内の ENV 命令は、イメージの環境変数を定義するために使用されます。次...
フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...
目次序文例まとめ序文Vue の親子コンポーネントは、props を通じて親コンポーネントの値を子コン...
<br />この記事では、XHTMLとXHTMLの基礎知識について簡単に紹介します。 X...