五好的Book

本站主要是研究linux操作系统-主要指ubuntu,debian系,php及html应用技术-包括css,javascript
中遇到的问题所做的杂碎记录,以便给自己及同样遇到类似问题的人做问题解决的参考

当group by 遇上order by 后总感觉语句是对的,然而结果却...

有文章表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;

执行.嗯,没错了.

本原创文章未经允许不得转载 | 当前页面:五好的Book » 当group by 遇上order by 后总感觉语句是对的,然而结果却...

评论