一道不错的数据库面试题

因为见有人发了数据库的面试题,所以想起我去年面试时候遇到的一个面试题,因为当时没有答出来,所以比较深刻。
题目是这样的:有一个数据库表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


不知道大家还有什么好的方法说出来分享一下!

你可能感兴趣的:(oracle,sql,面试)