2017-12-02 49 views
-1

我有一个使用MAX函数选择最大session_date场以下MySQL查询:MySQL的SELECT MAX,等领域有着错误的价值观

SELECT user_id, MAX(session_date), value 
FROM user_extra 
GROUP BY user_id 

与它的问题是,值字段似乎并没有被准确,它似乎从其他日期条目之一中获取错误的值数据。任何想法,为什么这是我怎么能解决这个问题?

回答

0

MySQL的GROUP BY有点奇怪。

您的查询将为每个user_id组返回MAX(session_date)。但是,没有指定将返回哪个值:您将为每个user_id组获得一个随机值。

如果您想为具有最大session_date每个USER_ID行的值,则需要另一个查询,像这样:

SELECT * FROM 
(SELECT user_id, MAX(session_date) AS session_date 
FROM user_extra GROUP BY user_id) AS foo 
JOIN user_extra USING (user_id,session_date) 
+0

什么价值? –

+0

它在*中,随意用列替换* ... – peufeu

+0

我不这么认为。*将从foo中获取不包含值的数据。 –

0
SELECT user_id, MAX(session_date) as date_session, value FROM user_extra GROUP BY user_id 
+0

,我没有看到你的代码有什么不同。仍然做同样的事情 – Ahmed