我有一张用户签入和签出时间的表(“ 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 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
这很接近,但并不完美。我知道最后一个分组依据不应存在,但是没有它,它将返回最近的时间,但不会返回相对IO值。
有任何想法吗?谢谢!