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

如何按DESC顺序分组

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

如何按DESC顺序分组

如果要

id
为每一个添加最后一个
asker
,则应使用聚合函数:

SELECt max(id) as id,    askerFROM questions GROUP by asker ORDER by id DESC

之所以得到不寻常的结果,是因为MySQL使用了一个扩展名,

GROUP BY
该扩展名允许未选择列表中的项进行汇总,并且不包含在GROUP
BY子句中。但是,这可能导致意外结果,因为MySQL可以选择返回的值。(请参阅MySQL对GROUP
BY的扩展

从MySQL文档中:

MySQL扩展了GROUP BY的使用,以便选择列表可以引用未在GROUP
BY子句中命名的非聚合列。…您可以使用此功能来避免不必要的列排序和分组,从而获得更好的性能。但是,这主要在每个未聚合列中未在GROUP
BY中命名的所有值对于每个组都相同时才有用。服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的。此外,通过添加ORDER
BY子句不会影响从每个组中选择值。选择值之后,将对结果集进行排序,并且ORDER BY不会影响服务器选择的值。

现在,如果您还有其他需要从表中返回的列,但是

GROUPBY
由于可能会导致不一致的结果而不想将它们添加到中,则可以使用子查询来这样做。(演示)

select   q.Id,  q.asker,  q.other -- add other columns herefrom questions qinner join(  -- get your values from the group by  SELECt max(id) as id,     asker  FROM questions   GROUP by asker ) m  on q.id = m.idorder by q.id desc


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

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

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