データベーステーブル内のすべての重複を削除し、それらのいずれも保持しないようにするにはどうすればよいですか?

user3509426

メール、名前、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は、updateordeleteステートメントで変更されるテーブルの単純なサブクエリをサポートしていません

編集:

多数のレコードを削除すると、パフォーマンスのボトルネックになる可能性があります。これを回避するには、必要なレコードを使用して一時テーブルを作成し、元のテーブルを切り捨てて、それらを再挿入します。

だから、これを試してみてください:

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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ