PostgreSQL使用distinct关键字给单独的几列去重

本文深入探讨PostgreSQL中distinct关键字的高级应用,特别是在多列去重方面的技巧。不同于MySQL,PostgreSQL的distinct和groupby有其独特之处,文章详细介绍了如何仅根据特定列进行去重,同时展示所有感兴趣的列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PostgreSQL使用distinct关键字给单独的几列去重

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值