Heim  >  Artikel  >  Backend-Entwicklung  >  有关group by 排序的有关问题,请进

有关group by 排序的有关问题,请进

WBOY
WBOYOriginal
2016-06-13 13:53:52723Durchsuche

有关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是没办法实现的。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn