五好的Book - 当group by遇上order by
type: channel
link: http://www.opensoft.pw/tag/%E5%BD%93group-by%E9%81%87%E4%B8%8Aorder-by/
items: 当group by 遇上order by 后总感觉语句是对的,然而结果却...

当group by 遇上order by 后总感觉语句是对的,然而结果却...
type: item
date: 2018-12-08T09:20:00+00:00
description: 有文章表txt字段如下:bid, aid, title, ctime ...表数据如下:bid aid title ctime 1 1 第一章 123 1 2 第二章 124 3 3 第一章 121 4 4 第二章 125 4 5 第一章 122 ...现在要求 按照bid(书ID)不能重复,而且按照 ctime(创建时间)降序做一个列表那么很自然的,可能会写出这样的SQL语句select * from txt group by bid order by ctime; 嗯,目光再扫射一遍,不错,就这样,应该,肯定,绝对可以满足需求了^_^ 然而实际执行之后却突然发现分组后排序不对.为什么?本着实事求是的态度,可能是这样的情况group by 后 他返回 ctime 可能是随机某个记录的值,然后再order by 显然是不对了的(只是推测...暂时没有去求证.)现在把解决方法写下来仅供参考:select * from (select *,max(ctime)ctimes from txt group by bid) a order by ctimes desc; 执行.嗯,没错了.