栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取每组分组的SQL结果的最大值的记录

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取每组分组的SQL结果的最大值的记录

在mysql中有一种超简单的方法:

select * from (select * from mytable order by `Group`, age desc, Person) xgroup by `Group`

这工作,因为在MySQL中你被允许 聚集非组逐列,在这种情况下,MySQL的只是返回的 第一
排。解决方案是首先对数据进行排序,以便对于每个组,您要的行都排在第一位,然后对要为其提供值的列进行分组。

您可以避免尝试查找

max()
等的复杂子查询,也可以避免在存在多个具有相同最大值的行时返回多个行的问题(如其他答案那样)

注意: 这是 仅mysql 解决方案。我知道的所有其他数据库都会引发SQL语法错误,并显示消息“ group
by子句中未列出未聚合的列”或类似消息。由于此解决方案使用了 未记录的
行为,因此更为谨慎的做法可能是包括一个测试,以断言如果将来的MySQL版本更改此行为,它 仍然可以 正常工作。

5.7版更新:

从5.7版开始,默认情况下

sql-mode
包含该设置
ONLY_FULL_GROUP_BY
,因此,要使此功能生效,您一定 不要
具有此选项(编辑服务器的选项文件以删除此设置)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370104.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号