> 백엔드 개발 > PHP 튜토리얼 > 有关group by 排序的有关问题,请进

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

WBOY
풀어 주다: 2016-06-13 10:00:34
원래의
949명이 탐색했습니다.

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿