php – MySQL将select与来自其他表的sum结合起来
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – MySQL将select与来自其他表的sum结合起来,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1426字,纯文字阅读大概需要3分钟。
内容图文
![php – MySQL将select与来自其他表的sum结合起来](/upload/InfoBanner/zyjiaocheng/894/b48bba25464d4da0961714eb471b08b9.jpg)
我对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
在sqlfiddle上看到它.
内容总结
以上是互联网集市为您收集整理的php – MySQL将select与来自其他表的sum结合起来全部内容,希望文章能够帮你解决php – MySQL将select与来自其他表的sum结合起来所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。