如何使三列按目标数排序?
Posted
技术标签:
【中文标题】如何使三列按目标数排序?【英文标题】:How do I make three columns combine ordered by the number of goals? 【发布时间】:2022-01-03 10:22:30 【问题描述】:我在统一 SQL 中的两个表时遇到了一些问题。我想得到本赛季进球更多的球员,但我做不到。
我已经以不同的方式完成了这两件事:
SELECT name, surname
FROM players
GROUP BY name, surname
如果我这样做,我会从玩家那里得到所有的名字,但是如果我在 JOIN ON 中将它与另一个混在一起,一些玩家会无缘无故地消失。
结果:
| name | surname |
| John | Brown |
| Robert | Smith |
| Albert | Carpenter |
| David | Addams |
| Richard | McAvoy |
然后我有每个进球的进球数,我通过 COUNT(*) 得到这个
SELECT COUNT(*) AS goals
FROM goals
JOIN players ON (players.id = goals.player_id)
GROUP BY player_id
ORDER BY goals DESC
LIMIT 5;
在这一点上,我也可以得到想要的结果,即进球得分最高的 5 个。但我不知道如何获得综合结果。
结果:
| goals |
| 152 |
| 140 |
| 102 |
| 95 |
| 91 |
我希望我的专栏是:
| Name | Surname | goals |
| John | Brown | 152 |
| Robert | Smith | 140 |
| Albert | Carpenter | 102 |
| David | Addams | 95 |
| Richard | McAvoy | 91 |
感谢任何帮助。 :)
【问题讨论】:
可以输入表GOALS的样本5-7条记录吗? 【参考方案1】:SELECT name, surname, COUNT(*) AS 目标
来自目标
inner JOIN player ON (players.id = goal.player_id)
组名,姓氏
按目标 DESC 排序
限制 5 个;
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:试试这个
SELECT p.name, p.surname, g.goals
FROM goals g
INNER JOIN players p ON p.id = g.player_id
ORDER BY g.goals DESC LIMIT 5;
如果您同时显示两个表中的一些记录,那么回答起来会更容易。现在我假设你的目标表就像这个 playerid -> 不。目标
【讨论】:
以上是关于如何使三列按目标数排序?的主要内容,如果未能解决你的问题,请参考以下文章