Group By 语句结合聚合函数

在mysql中,group by 语句可以省略聚合函数

假设有一个表 info

身份证姓名
idcard1name1
idcard2name2
idcard3name1

使用如下sql进行查询

select 身份证,姓名 from info group by 姓名;

按照常理讲,我们会认为这条语句会出错,因为当两个相同的姓名合并成一条记录的时候,我们需要告诉数据库如果身份证不同的时候应该显示谁。

但是这条语句居然正常工作,结果是冲突身份证号中的一个。

具体解释可以参考stackoverflow的回答

这种机制的好处包括
- 很多时候我们知道两个表是一对一关联的时候,join操作以后就可以通过group by来简单对某些字段去重。
- 有时候需要一些随机数据属性

不好之处在于不确定性会产生隐藏的bug

在postgres中,聚合函数必须要有

select max(身份证),姓名 from info group by 姓名;

这里会取相同姓名的最大的身份证,相比于mysql,并没有增加什么语法难度,但是结果更可控

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值