因为见有人发了数据库的面试题,所以想起我去年面试时候遇到的一个面试题,因为当时没有答出来,所以比较深刻。
题目是这样的:有一个数据库表peope,表有字段name,age,address三个属性(注:没有主键)。现在如果表中有重复的数据,请删去重复只留下其中的一条。重复的定义就是两条记录的name,age,address值都一样。
这道题的关键是怎么把重复的数据过滤掉,后来我考虑的做法是这样的:
这样就可以把重复的数据过滤掉,然后把这些数据插入到一个临时表中,删去原表中的所有数据,再把临时表中的数据插回来就可以了。
不知道大家还有什么好的方法说出来分享一下!
题目是这样的:有一个数据库表peope,表有字段name,age,address三个属性(注:没有主键)。现在如果表中有重复的数据,请删去重复只留下其中的一条。重复的定义就是两条记录的name,age,address值都一样。
这道题的关键是怎么把重复的数据过滤掉,后来我考虑的做法是这样的:
select * from people group by name,age,address having COUNT(DISTINCT name)=1
这样就可以把重复的数据过滤掉,然后把这些数据插入到一个临时表中,删去原表中的所有数据,再把临时表中的数据插回来就可以了。
1. CREATE TEMPORARY TABLE tmp_table select * from people group by name,age,address having COUNT(DISTINCT name)=1
2. delete from people
3. insert into people select * from tmp_table
不知道大家还有什么好的方法说出来分享一下!