メール、名前、IDの列を持つデータベーステーブルがあります
同じ電子メールと名前の重複レコードがあります(IDは異なる場合と異なる場合があります)
重複をすべて削除し、保持したくない。
例
email | name | id
-------------------------------------------------
[email protected] | a | 2 --- remove
[email protected] | a | 4 --- remove
[email protected] | b | 3
[email protected] | c | 5
これを行うためにphpmyadminでどのSQLクエリを使用できますか?
MySQLでは、これをjoin
:で行う必要があります。
delete t
from example t join
(select email, name
from example
group by email, name
having count(*) > 1
) todelete
on t.email = todelete.email and t.name = todelete.name;
残念ながら、MySQLは、update
ordelete
ステートメントで変更されるテーブルの単純なサブクエリをサポートしていません。
編集:
多数のレコードを削除すると、パフォーマンスのボトルネックになる可能性があります。これを回避するには、必要なレコードを使用して一時テーブルを作成し、元のテーブルを切り捨てて、それらを再挿入します。
だから、これを試してみてください:
create temporary table tempt as
select t.*
from example t join
(select email, name
from example
group by email, name
having count(*) = 1
) tokeep
on t.email = tokeep.email and t.name = tokeep.name;
truncate table example;
insert into example
select * from tempt;
select
最初にクエリを試して、適切なパフォーマンスがあり、必要なことを実行できることを確認してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加