由于我不是母语人士,所以如果我没有详细解释我的情况,我深表歉意。我确信这对大多数人来说相当简单,但我却很难做到。我正在使用 php/mysql。
假设我有一个数据库如下:
id game scorer
1 1 molly
2 1 sarah
3 1 angela
4 1 molly
5 2 jane
6 2 molly
7 2 sarah
我如何编写一个查询来向每场比赛的得分手提供他们在赛季中直到特定进球之前的进球数?
Example:
Game 1: Molly (1st), Sarah (1st), Angela (1st), Molly (2nd)
Game 2: Jane (1st), Molly (3rd), Sarah (2nd)
最佳答案
CREATE TABLE goals
(goal_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,game INT NOT NULL
,scorer VARCHAR(12) NOT NULL
);
INSERT INTO goals VALUES
(1,1,'molly'),
(2,1,'sarah'),
(3,1,'angela'),
(4,1,'molly'),
(5,2,'jane'),
(6,2,'molly'),
(7,2,'sarah');
SELECT game, GROUP_CONCAT(CONCAT(scorer,'(',rank,')')) scorers FROM
(
SELECT x.game
, x.scorer
, COUNT(*) rank
FROM goals x
JOIN goals y
ON y.scorer = x.scorer
AND y.goal_id <= x.goal_id
GROUP
BY x.game,x.goal_id,x.scorer
)n
GROUP BY game;
+------+--------------------------------------+
| game | scorers |
+------+--------------------------------------+
| 1 | molly(1),sarah(1),angela(1),molly(2) |
| 2 | jane(1),molly(3),sarah(2) |
+------+--------------------------------------+
子查询本身将提供替代显示
关于php - MySQL 计算直到特定行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21724135/