【发布时间】:2019-10-24 08:49:34
【问题描述】:
我希望以下查询仅选择特定年份的结果。 eventID 与事件日期所在的事件表相关。
冠军排行榜表
------------------------------------
| ID | eventID | playerId | points |
------------------------------------
事件表
------------------
| eventID | date |
------------------
我无法确定内部连接的放置位置,以便正确引用事件日期
SELECT playerId, SUM(points) top5
FROM
( SELECT x.*
, CASE WHEN @prev = playerId THEN @i:=@i+1 ELSE @i:=1 END i
, @prev:=playerId
FROM championshipLeaderboard x
, (SELECT @prev:=null,@i:=0) vars ORDER BY playerId,points
DESC) a
WHERE i<=5 AND playerId = 1 AND YEAR(events.date) = YEAR(CURDATE())
GROUP BY playerId
ORDER BY top5 DESC
见 DB fiddle here
【问题讨论】:
-
你在使用 MySQL 8+ 吗?
-
服务器版本:5.7.23 - MySQL 社区服务器 (GPL)
-
请共享表数据和预期结果集。而不是共享查询来修改使其成为已尝试的查询。
标签: mysql