繁体   English   中英

mysql max和group by在2表中得到错误的值

[英]mysql max and group by in 2 table get wrong values

我必须在Logs表中为表Users中的用户获取最大值“ value”,我的查询似乎可以正常工作,但它拾取了最大值但数据时间列数据错误

表用户

(primary+
unique)
name     | current_list   | other_columns
-----------------------------------------
george       1                data
carl         2                data
paul         1                data

表日志

user    |  list  |  value  |  datatime
-------------------------------------
george     1         4       2018-01-01
paul       1         7       2018-01-02  
carl       2         3       2018-01-03  
george     1         5       2018-01-04
paul       2         5       2018-01-05
carl       2         6       2018-01-06
carl       3         8       2018-01-07
george     2         9       2018-01-08
paul       1         8       2018-01-09
george     1         3       2018-01-10

结果应为(列表“ current_list”上的最高值)

user    |  other_columns  | top | datatime     
---------------------------------------------
george          data         5    2018-01-04
paul            data         8    2018-01-09
carl            data         6    2018-01-06

当我尝试显示datatime列时,我也得到了错误的数据

SELECT Logs.datatime,
       Users.*,
       MAX(Logs.value) 
FROM Users, Logs 
WHERE Users.current_list = Logs.list 
  and Users.name = Logs.user 
group by Logs.user

没有子查询就可以解决问题吗? 还是我需要使用它? 怎么样?

考虑到我有一个巨大的数据库,所以快速查询更好

首先,您需要找到每个产品的最大价值。

SELECT U.name, U.current_list, MAX(L.value) as m_value
FROM Users U          
JOIN Logs U
  ON U.name = L.user    
 AND U.current_list = L.list
GROUP BY U.name, U.current_list

然后获取其余字段

SELECT U.*, L.Value
FROM Users U
JOIN Logs U
  ON U.name = L.user    
 AND U.current_list = L.list
JOIN ( SELECT U.name, U.current_list, MAX(L.value) as m_value
       FROM Users U          
       JOIN Logs U
         ON U.name = L.user    
        AND U.current_list = L.list
       GROUP BY U.name, U.current_list
     ) T
  ON U.name = T.name
 AND U.current_list = L.current_list
 AND L.value= T.m_value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM