问题背景:
删除一张表中记录重复的数据,保证数据不重复(通过两个字段查询到的数据是不重复的)。
个人解决思路:
首先通过SQL以group by分组的方式,查询出不需要删除的数据(引用delete时需要一张临时表),再通过delete加not in进行操作
表结构如下:
手写SQL过程:
通过上表可知,需要删除的数据是id=1或id=4的记录中的一条数据
我先通过group by 分组查询出不需要删除的数据,select id from t_temp group by course_id,score (面试官说这样只取出id会报错,通过实操是可以执行的),然后通过delete from t_temp where id not in (select id from ( select id from t_temp group by course_id,score ) t)就可以删除重复的数据。
注意:
需要注意的一点是需要一张临时表T,操作可能会慢,但是能解决问题。
网友评论