php select sum 求和,php – MySQL将select与来自其他表的sum结合起来

我对MySQL并不是很了解,但我需要一个声明,我非常感谢你对此的帮助.

我有两张桌子:’用户’和’得分’

这是“用户”的结构:

| user_id | user_name |

| 1 | Paul |

| 2 | Peter |

这里是’得分’的结构:

| score_id | score_user_id | score_track_id | score_points |

| 1 | 2 | 23 | 200 |

| 2 | 2 | 25 | 150 |

现在我需要一个查询,为我提供某种高分列表.结果应包含user_id,user_name以及与用户相关的所有分数的总和:我应该如下所示:

| user_id | user_name | scores |

| 1 | Paul | 0 |

| 2 | Peter | 350 |

更好的是,如果结果将按照用户在全球排名中的位置排序,如下所示:

| position | user_id | user_name | scores |

| 1 | 2 | Peter | 350 |

| 2 | 1 | Paul | 0 |

我试过这个声明

SELECT user_id as current_user, user_name, SUM(SELECT score_points FROM score WHERE score_user_id = current_user) as ranking FROM user ORDER BY ranking DESC

这会导致语法错误.

对我来说,主要的问题是将user_id从’user’连接到每行的’score’中的score_user_id.

非常感谢您的帮助

解决方法:

您只需要按用户对您的分数进行分组:

SELECT @p:=@p+1 AS position, t.*

FROM (

SELECT user.user_id,

user.user_name,

IFNULL(SUM(score.score_points),0) AS total_points

FROM user LEFT JOIN score ON user.user_id = score.score_user_id

GROUP BY user.user_id

ORDER BY total_points DESC

) AS t JOIN (SELECT @p:=0) AS initialisation

标签:php,sql,mysql,sum,select

来源: https://codeday.me/bug/20190826/1728264.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值