MySQL重複排除方法

怪我咯
怪我咯オリジナル
2017-07-06 11:25:482767ブラウズ

この記事では主にMySQL重複排除方法の関連情報を紹介しますので、必要な方は

MySQL重複排除方法

[初歩] 重複行はほとんどありません

個別に確認して削除してください。 一行ずつ手動で行います。

[中級] 単一フィールドの繰り返しに基づく重複排除

例: ID フィールドの重複排除

使用法: ID の繰り返しフィールドの値を取得し、同じ ID フィールドが存在する行を使用しますを見つけて、異なるデータ フィールドを比較し、最小 (または最大) のフィールドが配置されている行を除くすべての重複行を削除します。通常、主キーの値は一意の値である必要があり、同じであってはいけないため、比較には主キーが使用されます。

id  name

1    a

1    b

2    c

2    a

3    c

結果:

id  name

1    a 

2    a

操作:

delete from a_tmp 

where id in (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb) 

and name not in (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa);


注:

上記の太字と緑色の単語はエイリアスであり、select * from (...) の形式を使用する必要があります。そうでない場合はエラーになります。レポート:

[Err] 1093 - FROM 句で update のターゲット テーブル 'a_tmp' を指定することはできません

[上級] 複数のフィールドで繰り返します

例: ID の場合、同じもので重複排除名前、つまり: 同じ ID と名前を持つ行は重複行としてカウントされ、同じ ID で異なる名前を持つ行は重複しない行としてカウントされます

使用方法: 単一フィールドと同様に、主キーは通常、主キーの値は一意の値である必要があるため、比較に使用されます。

id  name  rowid

1  a      1

1  a      2

1  b      3

2  b      4

2  b      5

3  c      6

3  d     7

結果:

id  name  rowid

1  a      1 

1  b      3

2  b      4

3  c      6

3  d     7

操作:

最初のタイプ:

delete from a_tmp 

where (id,name) in (select * from (select b.id,b.name from a_tmp b group by b.id,b.name having count(b.id) >1) bb) 

and rowid not in (select * from (select min(a.rowid) from a_tmp a group by a.id,a.name having count(a.id) >1) aa);

2 番目のタイプ:

id フィールドと name フィールドの値を接続し、一時テーブル b_tmp に挿入します。 【中級】単一フィールド判定・削除方法をご利用いただけます。

#a_tmpテーブルの2つのフィールドと一意の値フィールド間の接続の値をb_tmpテーブルに挿入します

insert into b_tmp 

 select concat(id,name),rowid from a_tmp;

#查出需要留下来的行

select id_name,max(rowid)

 from b_tmp 

 group by id_name

 having count(id_name)>1;

#使用【中级】的方法,或存储过程完成去重的工作

【究極】各行には同じデータのコピーが2つあります

例:

使用法: 行全体 データはすべて同じであり、1 行を残し、それと同一のすべての行を削除する条件制限がないため、SQL ステートメントを使用して削除することはできません。異なるフィールドはありません。異なるフィールドを自分で作成できます。つまり、フィールドを追加し、それを自動インクリメントに設定し、それを主キーとして設定すると、上限の値が自動的に追加されます。

id  name

1   a

1   a

1   b

1   b

2   c

2   c

3   c

3   c

結果:

id  name   rowid

1   a       1

1   b       3

2   c       5

3   c       7

操作:

自己増加フィールドを追加し、それを主キーとして一時的に設定します。

上記の[中級]と[上級]の方法を使用してください。

以上がMySQL重複排除方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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