首页 > 解决方案 > Mysql通过用户ID加入表组并设置最大日期的分数结果

问题描述

我正在开发一个用于电子学习的 WordPress 网站。因此,一名学生多次参加课程并多次获得分数。现在我需要得到一个带有分数和最后一条记录的 id。我尝试了很多示例,但能够得到结果。我在下面给出了我的代码。

SELECT m.id
     , m.email
     , t.id_tracking
     , t.user_id
     , FROM_UNIXTIME(t.date)
     , t.score
     , t.groupe_id
  FROM tracking t
  join membres m
 WHERE t.id_tracking IN (
SELECT MAX(date)
FROM tracking
GROUP BY user_id
)

我用过关于查询我不知道我做错了什么

user_id     email               score     date
  1       test@testmail.com      78       15-06-2019      
  1       test@testmail.com      89       12-08-2019
  2       sam@testmail.com       66       24-03-2018
  2       sam@testmail.com       44       19-07-2019
  3       siv@testmail.com       98       09-02-2019
  3       siv@testmail.com       78       13-08-2020

我需要得到下面的结果

user_id   email               score     date
   1     test@testmail.com    89       12-08-2019
   2     sam@testmail.com     44       19-07-2019
   3     siva@testmail.com    98       09-08-2020

标签: mysql

解决方案


您可以通过将日期转换为 UNIX TIMESTAMP来GROUP BY发送电子邮件/用户 ID 并从每个组中选择最大值,如下所示date

    SELECT user_id, email, score, FROM_UNIXTIME(MAX(UNIX_TIMESTAMP(date)))
    FROM tableName 
    GROUP BY user_id

推荐阅读