MySQL排序之前的排序不起作用

时间:2019-05-21 04:31:59

标签: mysql

我有两个桌子

  

用户

user_id | name
1       | John
2       | Jess
  

user_data(输入输出-1表示输入,0表示输出)

id | user_id | in_time              | out_time             | in_out
1  | 1       | 2019-05-14 09:15:32  | 2019-05-14 10:45:32  | 0
2  | 1       | 2019-05-15 10:15:32  | 0000-00-00 00:00:00  | 1
3  | 2       | 2019-05-16 11:15:32  | 2019-05-16 12:15:32  | 0

我想获取每个用户的最新条目,但分组方式和排序方式效果不佳。

首先,我尝试按照以下方式进行操作,但这并没有提供最新记录(我想从user_data表中获取记录ID 2和3,但它会返回记录ID 1和3)

SELECT *, user.user_id as user_key 
FROM user 
LEFT JOIN user_data ON user_data.user_id = user.user_id 
GROUP BY user_data.user_id ORDER BY user_data.id DESC

其次,我尝试按照以下方式进行操作,我在回答了stackoverflow之后编写了此查询,但是它没有用。

SELECT *, user.user_id as user_key 
FROM user 
LEFT JOIN 
( 
SELECT MAX(user_data.id) as max_record_id, user_data.user_id 
FROM user_data 
GROUP BY user_data.user_id 
) u2 ON u2.user_id = user.user_id 
GROUP BY user_data.user_id ORDER BY user_data.id DESC

请有人帮我解决这个问题。谢谢

1 个答案:

答案 0 :(得分:1)

您可以尝试使用相关子查询

SELECT *, user.user_id as user_key 
FROM user 
LEFT JOIN user_data u2 ON u2.user_id = user.user_id 
where u2.id in (select MAX(u3.id) from user_data u3 where u2.user_id=u3.user_id)
ORDER BY u2.id