有关group by 排序的有关问题,请进
程序员文章站
2022-06-04 08:57:48
...
有关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是没办法实现的。
有这样一个表: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是没办法实现的。
相关文章
相关视频
上一篇: Photoshop 一颗闪亮的水晶桃心