另一个表中的MySQL Group by Max()值(按日期)(每天一个)

另一个表中的MySQL Group by Max()值(按日期)(每天一个),mysql,Mysql,我有两张桌子: 数据: id, name, surname, date, result 统计数据: id, average, type 我试图得到一个表结果,每个日期有一条记录,最大平均值来自表“stats” 例如 到目前为止,我尝试了一些查询,如(没有成功): 我怎样才能让它工作?谢谢您的数据模型似乎非常糟糕。为什么日期在数据表中,而不是状态表中 在任何情况下,您都要处理“日期”/“平均值”对,因此需要将表连接在一起两次: SELECT d.*, s.* FROM Data d JOIN

我有两张桌子:

数据:

id, name, surname, date, result
统计数据:

id, average, type
我试图得到一个表结果,每个日期有一条记录,最大平均值来自表“stats”

例如

到目前为止,我尝试了一些查询,如(没有成功):


我怎样才能让它工作?谢谢

您的数据模型似乎非常糟糕。为什么日期在
数据
表中,而不是
状态
表中

在任何情况下,您都要处理“日期”/“平均值”对,因此需要将表连接在一起两次:

SELECT d.*, s.*
FROM Data d JOIN
     Stats s
     ON d.id = s.id JOIN
     (SELECT d2.date, MAX(s2.average) as max_average
      FROM Data d2 JOIN
           Stats s2 
           ON d2.id = s2.id
      WHERE s2.type = 'A'          
     ) sd2 
     ON sd2.date = d.date AND sd2.max_average = s.average
WHERE s2.type = 'A'
ORDER BY d.date DESC ;

我假设表名周围的单引号是转录错误。谢谢。是的,这是一个有点复杂的结构,不是理想的解决方案,但它比那个更复杂。您提供的解决方案正在on子句中的未知列“d.id”处停止
SELECT * FROM 'Data'
JOIN 'Stats' ON Data.id = Stats.id
INNER JOIN
        (  SELECT  MAX(average) 
           FROM 'Stats'
           WHERE Stats.type = 'A'
           GROUP BY Data.date
        ) 'Data' ON Stats.id = Data.id
ORDER BY Data.date DESC 
SELECT d.*, s.*
FROM Data d JOIN
     Stats s
     ON d.id = s.id JOIN
     (SELECT d2.date, MAX(s2.average) as max_average
      FROM Data d2 JOIN
           Stats s2 
           ON d2.id = s2.id
      WHERE s2.type = 'A'          
     ) sd2 
     ON sd2.date = d.date AND sd2.max_average = s.average
WHERE s2.type = 'A'
ORDER BY d.date DESC ;