我有两个桌子
用户
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
请有人帮我解决这个问题。谢谢
答案 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