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 ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Linux (Ubuntu) ユーザーがログイン時に N 回連続して間違ったパスワードを入力すると、システムは自動的に X 分間ロックされます。
オペレーティングシステム: Windows10 MySQL バージョン: 8.0.13-winx64...
目次cgroupとはcgroupの構成cgroupが提供する機能cgroup 内の CPU を制限す...
データの昇順、降順ソート1. フィールド名による単一フィールドのソート順機能:どのフィールドを基準に...
この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...
序文最近、弊社のサーバーがハッカーの攻撃を受け、一部のファイルの属性が変更されたため、ウイルスファイ...
目次序文やることリストやるだけ地図を準備するインスタンスをバックアップ用に保存するタイマーカルーセル...
この記事では、Harbor アーキテクチャの構成と、実行時に各コンポーネントを使用する方法について説...
序文昨日、h5 WeChat認証の実装が必要なプロジェクトがありました。したがって、この機能を完了す...
序文MySQL の権限テーブルは、データベースの起動時にメモリにロードされます。ユーザーが ID 認...
Mysql を完全にアンインストールするにはどうすればいいですか?以下の手順に従って実行してくださ...
1. まずmysqlサービスを停止します管理者としてCMDを開いて閉じるか、Windowsサービスペ...
metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うかもし...
n 個のアイテムがあり、これらのアイテムをグリッド レイアウトの列に並べ替える必要があるとします。列...
序文ミニプログラムには、ユーザーを取得するための非常に便利な API があり、getPhoneNum...
参考までにMySQL 8.0.22をダウンロードしてインストールしてください。具体的な内容は次のとお...