欢迎来到代码驿站!

PostgreSQL

当前位置:首页 > 数据库 > PostgreSQL

PostgreSQL 实现distinct关键字给单独的几列去重

时间:2021-05-21 08:25:40|栏目:PostgreSQL|点击:

PostgreSQL去重问题一直困扰着我,distinct和group by远不如MySQL用起来随便,但是如果掌握了规律,还是和MySQL差不多的

主要介绍的是distinct关键字

select distinct id,name,sex,age from student

假如有一张student表,字段如上图,我查询student表中所有信息用distinct去重(上面的SQL语句),pgsql就会根据所有的字段通过算法取得重复行的第一行,但是很明显,ID这个字段我在设计的时候不会让它重复,所以相当于没有去重

我想只根据name和age去重怎么办?

可以这么写

select distinct on (name,age) id,name,sex,age from student

这样就会只根据name和age去重了

总结一下:

distinct on (),括号里面的内容是要去重的列,括号外面的内容是你要查询展示的列,两者没有关系,你可以根据某些列去重不必将他们查询出来,最后这个举一个例子就是:

我要查询name和age,根据name和sex去重:

select distinct on (name,sex) name,age from student

补充:PostgreSQL按照某一字段去重,并显示其他字段信息

以前遇到去重的地方更多的是MySQL去重后统计,比如select count(distinct 字段) from 表,后来临时遇到用Postgresql查询全部信息,但要对某个字段去重,查资料发现select * from table group by 要去重的字段,在MySQL上可以用,就搬到Postgresql试一下发现不行,又Google一番,终于找到一种方案:select distinct on(字段) * from 表,就可以了。

如下图:

对name字段去重后再查询全部字段:

上一篇:PostgreSQL 对IN,EXISTS,ANY/ALL,JOIN的sql优化方案

栏    目:PostgreSQL

下一篇:postgresql修改完端口后直接psql连接数据库报错的解决

本文标题:PostgreSQL 实现distinct关键字给单独的几列去重

本文地址:http://www.codeinn.net/misctech/125722.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有