我有一张很多很多的桌子,我的桌子看起来像这样
+----+--------+
| Customers |
+----+--------+
| id | name |
+----+--------+
| 1 | john |
| 1 | john |
| 1 | james |
| 2 | george |
| 2 | michael|
+----+--------+
我想要的是删除具有相同名称的重复行。
答案 0 :(得分:2)
不幸的是,你无法将一行与另一行区分开来。因此,最简单的方法是临时表方法:
create table temp as
select distinct id, name
from customers;
truncate table customers;
insert into customers(id, name)
select id, name
from temp;
drop table temp;
答案 1 :(得分:0)
答案 2 :(得分:0)
@Gordon Linoff回答的一个小变化是避免“插入”并执行“重命名表”并使查询在任何表格上工作。
解决方案-1:使用临时表
CREATE TABLE table_name_clean AS SELECT DISTINCT
*
FROM
table_name;
DROP TABLE table_name;
RENAME TABLE table_name_clean TO table_name;
解决方案-2:添加UNIQUE INDEX(推荐它会阻止在表格中创建重复的条目)
ALTER IGNORE TABLE table_name ADD UNIQUE INDEX u_id (id,name);