大家好,欢迎来到IT知识分享网。
select distinct UserResult from Table1
方法2:group by去重
作用:将重复的行进行分组,相同的数据只显示第一行
弊端:使用group by后,所有查询字段都需要使用聚合函数,比较繁琐
注意点:这样去除之后的数据是保留的第一条重复的数据,如果想保留最后一条数据,将min()改成max(),此为,如果存在null的情况,如果获取最后一条数据中有空字段时,如果想拿空值,数据库会自动拿上一个值填充空值
代码:
select min(UserName)UserName,min(UserSex)UserSex,min(UserSubject)UserSubject,min(UserResult)UserResult from Table1 group by UserResult
select *from ( --查询出重复行 select *,row_number() over (partition by UserResult order by UserResult desc)num from Table1 )A where A.num=1
方法4:方法3的进阶
代码:一张表a,开始时间是b,用户姓名c
select a.* from a join(select c, max(b) as max b from a group by c ) b on a.c = b.c and a.b = b.max b
原理:先根据要去重的字段姓名,和唯一字段时间,拿到最后一个值,然后根据这个值,作为链接查询的关系,自连,从而完成拿到最后一条数据
DELETE FROM dept WHERE dname IN ( SELECT dname FROM dept GROUP BY dname HAVING count( dname ) > 1 ) -- 过滤出重复的dname AND deptno NOT IN ( SELECT min( deptno ) AS deptno FROM dept GROUP BY dname HAVING count( dname ) > 1 ) --
过滤出不在需要保留的id之外的所有id
MySQL数据库:
DELETE FROM dept WHERE dname IN ( SELECT * FROM ( SELECT dname FROM dept GROUP BY dname HAVING count( dname ) > 1 ) a ) AND deptno NOT IN ( SELECT * FROM ( SELECT min( deptno ) AS deptno FROM dept GROUP BY dname HAVING count( dname ) > 1 ) b )
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116629.html


