如何删除重复记录mysql

时间:2015-10-28 06:07:20

标签: mysql

我有桌子

DATE       TRAN_VAL     NAME
may01         24           hari
may01         24           hari
jun22         29           giri
jun22         29           giri
dec19         33           niraj
jan01         56           balu

在上表中,名称hari& giri有完整的重复记录, 如何删除/删除它们 O / P

DATE       TRAN_VAL     NAME
may01         24           hari
jun22         29           giri
dec19         33           niraj
jan01         56           balu

2 个答案:

答案 0 :(得分:0)

如果您的表中有主键,则可以通过此查询 -

如果只想保留最新记录 -

DELETE t1 FROM mytable t1 
JOIN mytable t2 ON t1.name = t2.name 
AND t1.primary_key < t2.primary_key;

如果只想保留第一条记录 -

DELETE t1 FROM mytable t1 
JOIN mytable t2 ON t1.name = t2.name 
AND t1.primary_key > t2.primary_key;

如果您没有主键和任何字段,您可以区分您的行,那么您可以通过更改查询来实现它 -

ALTER IGNORE TABLE mytable ADD UNIQUE Uk_name(name);

注意:它会锁定表格,因此请避免在高峰时间在生产服务器上使用。

如果您不想要这个唯一的密钥,请在删除副本后将其删除。

答案 1 :(得分:0)

DELETE FROM table_name 其中DATE,TRAN_VAL,NAME in(     SELECT DATE,TRAN_VAL,NAME         FROM(                 选择DATE,TRAN_VAL,NAME                 FROM table_name                 GROUP BY DATE,TRAN_VAL,NAME                 有COUNT(*)&gt; 1)temp                 );