日期:2014-05-17  浏览次数:20517 次

有关group by 排序的问题,请进
有这样一个表:tab1
+----+-------+--------+-------+
|   id   |     aa       |       bb       |       cc     |
+----+-------+--------+-------+
|     1   |     0001   |       1         |     10       |
|     2   |     0001   |       2         |     10       |
|     3   |     0002   |       6         |     10       |
|     4   |     0003   |       5         |     10       |
|     5   |     0003   |       7         |     10       |
|     6   |     0003   |       4         |     10       |
|     7   |     0004   |       3         |     10       |
+----+-------+--------+-------+

用了下列语句:
select   aa,bb,sum(cc)   as   cc   from   tab1   group   by   aa   order   by   cc   desc,bb   desc
输出结果如下:
      aa     bb     cc
======================
    0001     1     20
    0002     6     10
    0003     5     30
    0004     3     10
我想要的结果是:
      aa     bb     cc
======================
    0001     1     20
    0002     6     10
    0003     4     30
    0004     3     10
也就是说字段bb对应的数据库中最新一条数据的值,这个如何实现???

------解决方案--------------------
试一下
select tab1.aa,tab1.bb,ntab.cc from tab1,(select max(id) as id,sum(cc) as cc from tab1 group by aa) as ntab where tab1.id=ntab.id order by ntab.cc
------解决方案--------------------
楼上的应该是可以出来正确结果。(我没测试,但应该可以)

关于楼主的问题,给你回答下,mysql中group by的时候显示的记录是同group 中最先插入的,也就是最旧的:P呵呵,因此楼主的想法用简单的sql是没办法实现的。