ホームページ  >  記事  >  データベース  >  mysqlデータベースから重複データを削除する方法

mysqlデータベースから重複データを削除する方法

coldplay.xixi
coldplay.xixiオリジナル
2020-09-29 15:19:366444ブラウズ

Mysql データベースの重複排除方法: 1. 削除する必要があるレコードをクエリすると、1 つのレコードが保持されます; 2. 重複したレコードを削除すると、1 つのレコードのみが保持されます。コードは [delete a test1 a から、(.. .) test1 c からの入札として、どこで..]。

mysqlデータベースから重複データを削除する方法

重複データを削除する Mysql データベース メソッド:

1. 削除する必要があるレコードをクエリし、 1 つのレコードが保持されます。

select a.id,a.subject,a.RECEIVER from test1 a left join (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b on a.id< b.bid where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid

2. 重複するレコードを削除し、1 つのレコードのみを保持します。 subject,RECEIVER にはインデックスを作成する必要があることに注意してください。そうでないと非常に遅くなります。

delete a from test1 a, (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid;

3. テーブル内の冗長な重複レコードを検索します。重複レコードは単一のフィールド (peopleId) に基づいて判断されます。

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

4. テーブル内の冗長な重複レコードを削除します。重複レコードは単一のフィールドに基づいて判断します。フィールド (peopleId) を判断し、最も小さい rowid を持つレコードのみを残します。

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

5。テーブル内の重複する重複レコード (複数のフィールド) を削除し、 smallest 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)

怠けてコマンドを使用してこの作業を完了する場合、それは明白ではないようです。段階的に処理してみましょう。アイデアは、最初に作成し、一時テーブルをコピーし、一時テーブルのデータを比較し、メイン テーブルのデータを削除します。

alter table tableName add autoID int auto_increment not null; 
 
create table tmp select min(autoID) as autoID from tableName group by Name,Address; 
 
create table tmp2 select tableName.* from tableName,tmp where tableName.autoID = tmp.autoID; 
 
drop table tableName; 
 
rename table tmp2 to tableName;

その他の関連する無料学習の推奨事項: mysql チュートリアル(ビデオ)

以上がmysqlデータベースから重複データを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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