我有一个名为“lms_attendance”的表格,记录了用户签到和签退的时间,如下所示:
id user time io (enum)
1 9 1370931202 out
2 9 1370931664 out
3 6 1370932128 out
4 12 1370932128 out
5 12 1370933037 in
我希望创建一个视图,该视图仅输出每个用户ID的最新记录,并提供“in”或“out”值,例如:
我试图创建一个视图来仅输出每个用户id最近的记录,同时给出“in”或“out”值,因此类似于:
id user time io
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in
我目前已经非常接近了,但我意识到视图不接受子查询,这使得它变得更加困难。我最接近的查询是:
select
`lms_attendance`.`id` AS `id`,
`lms_attendance`.`user` AS `user`,
max(`lms_attendance`.`time`) AS `time`,
`lms_attendance`.`io` AS `io`
from `lms_attendance`
group by
`lms_attendance`.`user`,
`lms_attendance`.`io`
但我得到的是:
id user time io
3 6 1370932128 out
1 9 1370931664 out
5 12 1370933037 in
4 12 1370932128 out
看起来已经很接近了,但还不完美。我知道最后一个group by不应该在那里,但是如果没有它,就会返回最近的时间,但没有其相对的IO值。
有什么想法吗? 谢谢!