mysql - 选择指定年份的结果

标签 mysql

我希望以下查询仅选择特定年份的结果。 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

参见数据库 fiddle here

最佳答案

经过一番讨论(见评论)我想出了这个:

SELECT top5.playerId, SUM(top5.points) AS sumOfPoints
FROM (
    SELECT playerId, points
    FROM championshipLeaderboard
    INNER JOIN events ON championshipLeaderboard.eventID = events.eventID
    WHERE playerId = 1
    AND YEAR(events.date) = YEAR(CURDATE()) 
    ORDER BY points DESC
    LIMIT 5
 ) AS top5
 GROUP BY top5.playerId

另请参阅:https://www.db-fiddle.com/f/56ApCUAW6QFJ7vNiyLQqaF/5

关于mysql - 选择指定年份的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58537632/

相关文章:

MYSQL远程连接Coda 2

php - mysql中Like子句阿拉伯字符串的日期类型问题

mysql - 获取数据库中varchar列的最大值

mysql - 带有group by的sql嵌套查询

mysql - 更改 MySQL 服务器的 XAMPP Windows 7 端口

php - 尝试在 PHP 中使用 "SET @rownum = 0;"时出错

mysql - Bundler 声称已安装我的 bundle ,但找不到 Rails 或 MySQL

MySQL:如何获得一个字段与前一个字段相比的变化百分比

c# - 如何将我的选择值存储到 session 变量中?

mysql - Tomcat6 UTF-8字符显示问题