比如有一张students表,字段如下:
id
name
gender
score
我想根据name
和gender
两个字段来去重,如果这两个字段都相同,只保留一个,应该怎么做呢?请各位大佬帮说一说。
比如有一张students表,字段如下:
id
name
gender
score
我想根据name
和gender
两个字段来去重,如果这两个字段都相同,只保留一个,应该怎么做呢?请各位大佬帮说一说。
利用 group by 取得相同名称性别,最小的 id ,用来保留
select name,gender,min(id) as id from students
group by name,gender
删除不在保留列表的数据
select * from students
where id not in (
select id from(
select name,gender,min(id) as id from students
group by name,gender
)t1
)
快一点的方法不是去删除数据,你可以通过楼上们说得通过group by 或者 distinct 筛选出不重复数据,入新表,老表改名字确认无误后删除,看你数据量的多少决定,select into or insert into select 自己根据需要进行使用~
首先找出重复数据 然后再进行删除操作
select name,gender,count(1) from students group by name,gender,count(1) having count(1)>1
select * from students where name=? and gender=? --上面的查询结果 手动处理就好了 既然有重复数据只能手动进行处理
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读
3 回答2k 阅读
不管是加不加索引 group by 都比 distinct 快, 候建议选 group by.
可以亲自去测试一下