Maison > Article > développement back-end > 还是问一个mysql的查询汇总的汇总问题
有五个人,uid分别是1~5
id uid scroe-------------1 1 1.52 1 1.83 2 -5.54 1 0.85 2 8.26 1 -27 4 38 2 2.3--------------
用户 分数 汇总分-----------------------1 1.5 2.11 1.8 2.11 0.8 2.11 -2 2.12 -5.5 52 8.2 52 2.3 53 0 04 3 35 0 0
不知道楼主想要问什么
怎么得到第二张表,mysql语句怎么写?
建表:
CREATE TABLE a (`id` int, `uid` int, `scroe` float); INSERT INTO a (`id`, `uid`, `scroe`)VALUES (1, 1, 1.5), (2, 1, 1.8), (3, 2, -5.5), (4, 1, 0.8), (5, 2, 8.2), (6, 1, -2), (7, 4, 3), (8, 2, 2.3);
问题是你数据集里都没uid=3和uid=5的纪录。参考
select t.*,round(s.scroe,1) as scroe , round(if(s.total is null,0,s.total),1) as summary from (select 1 as uid union select 2 as uidunionselect 3 as uid union select 4 as uidunion select 5 as uid) t left join (select uid,scroe,(select sum(scroe) from a where uid=aa.uid group by uid) as total from a as aa) son s.uid = t.uid
问题是你数据集里都没uid=3和uid=5的纪录。
uid是和user表里管理的字段,根据user表里的记录来读取:
在这里: http://bbs.csdn.net/topics/390673185
用户表tu
得分表t
SQL:SELECT tu.uid,t.score,a.total from test t right join test_user tu on tu.uid=t.uid left join (SELECT uid,sum(score) as total from test group by uid) a on a.uid=t.uid order by tu.uid
结果