ホームページ >データベース >mysql チュートリアル >mysqlで重複チェックを実装し、1つだけを残す方法

mysqlで重複チェックを実装し、1つだけを残す方法

藏色散人
藏色散人オリジナル
2020-11-01 14:33:162645ブラウズ

重複チェックを実装し、1 つだけを保持する Mysql メソッド: まず、「select * from」を使用してテーブル内の重複する重複レコードを見つけます。次に、「delete from」を使用して重複データを削除し、1 つのデータのみを保持します。

mysqlで重複チェックを実装し、1つだけを残す方法

# 推奨: 「

mysql ビデオ チュートリアル

mysql は重複データを削除し、1 つのレコードのみを保持します

重複データを削除し、名前の中で最も小さい ID を持つレコードを保持します

delete from order_info where id not in (select id from (select min(id) as id from order_info group by order_number) as b);

delete from table where id not in (select min(id) from table group by name having count(name)>1) and  id in (select id group by name having count(name)>1)

(注: HAVING 句が GROUP BY 句の条件を設定する方法は、WHERE 句の方法と似ています。と SELECT は相互作用します。WHERE 検索条件はグループ化操作の実行前に適用され、HAVING 検索条件はグループ化操作の実行後に適用されます。HAVING 構文は WHERE 構文に似ていますが、HAVING には集計関数を含めることができます。HAVING 句は参照できます。選択リストに表示される任意の項目。)

拡張子:

SQL: 重複データを削除し、SQL ステートメントを 1 つだけ保持します。重複データを削除し、数千のレコードのうち 1 つだけを保持します。同一のレコードがいくつかありますが、SQL ステートメントを使用して重複を削除するにはどうすればよいですか?

1. テーブル内の重複する重複レコードを見つけます。重複レコード単一フィールド (peopleId) に基づいて判断します

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2. テーブル内の重複する重複レコードを削除します 重複レコードは単一フィールド (peopleId) に基づいて判断され、最小の ROWID を持つレコードのみが残ります

delete from people where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1)

3. テーブルの冗長重複レコード (複数フィールド) を検索します##
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4. テーブル内の冗長重複レコード (複数フィールド) を削除し、最小の rowid を持つレコードのみを残します

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5. テーブルの冗長重複レコード (複数フィールド) を検索し、最小の ROWID

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

6. フィールドの左側の最初の桁を削除します:

update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

7. フィールドの右側の最初の桁を削除します 最初の場所:

update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

8. テーブル内の重複する重複レコード (複数のフィールド) を偽って削除し、最小の rowid を持つレコードを除外します

リーリー

以上がmysqlで重複チェックを実装し、1つだけを残す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。