0

好的,我知道这听起来可能搞砸了,但是 mysql 昨天某个时候通过一种意想不到的遏制我的方式,这是我以前从未遇到过的。

所以我们有一个名为employees 的数据库表,在该表中你有类似的记录

Russell
Smith
Sam

但突然间我有了

Russell
Russell
Smith
Smith
Smith
Sam
Sam
Sam

如果有人知道如何解决这个问题,下载完整的表格并手动修复它并重新上传会很棒

4

2 回答 2

1

如果您的表有一个id列,并且您只想保留最低的记录,id您可以这样做

delete from employees 
where id not in 
(
   select * from 
   (
     select min(id) 
     from employees 
     group by name
   ) x
)
于 2013-05-28T00:28:12.980 回答
0

我的建议:

(1)新建临时表为:

create temporary table xxx as
    select distinct * from employees

(2) 截断原表

truncate table employees

(3) 重新插入记录

insert into employees
    select * from xxx

通过截断表,您将保留与其相关的几乎所有信息——安全性、触发器、约束。一个问题可能是自动递增的主键。如果您有其中一个,这可能不起作用(但话又说回来,如果有主键,您将无法复制记录)。

于 2013-05-28T00:26:55.863 回答