有文章表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;
执行.嗯,没错了.
评论 (0)