我有一个用户登记和退出时间表("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
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个这个表的视图,它只输出每个用户ID的最新记录,同时给我"in"或"out"值,如下所示:
id user time io
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in
Run Code Online (Sandbox Code Playgroud)
我很接近,到目前为止,但我意识到,意见将不接受subquerys,这使其成为了很多困难.我得到的最接近的查询是:
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`
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
id user time io
3 6 1370932128 out
1 9 1370931664 out
5 12 1370933037 in …Run Code Online (Sandbox Code Playgroud) 使用以下查询和结果,我正在寻找ChargeId和ChargeType唯一的最新条目.
select chargeId, chargeType, serviceMonth from invoice
CHARGEID CHARGETYPE SERVICEMONTH
1 101 R 8/1/2008
2 161 N 2/1/2008
3 101 R 2/1/2008
4 101 R 3/1/2008
5 101 R 4/1/2008
6 101 R 5/1/2008
7 101 R 6/1/2008
8 101 R 7/1/2008
Run Code Online (Sandbox Code Playgroud)
期望:
CHARGEID CHARGETYPE SERVICEMONTH
1 101 R 8/1/2008
2 161 N 2/1/2008
Run Code Online (Sandbox Code Playgroud) 我有一个表客户,存储customer_id,电子邮件和参考.有存储的客户所做的更改历史记录的附加表CUSTOMER_DATA,即当有一个变化作出了新的行插入.
为了在一个表中显示客户信息,这两个表需要连接,但只有从CUSTOMER_DATA最近的行应连接到客户表.
它有点复杂,因为查询是分页的,所以有一个限制和一个偏移量.
我怎么能用MySQL做到这一点?我想我想在那里放一个DISTINCT ......
分钟的查询是这样的 -
SELECT *, CONCAT(title,' ',forename,' ',surname) AS name
FROM customer c
INNER JOIN customer_data d on c.customer_id=d.customer_id
WHERE name LIKE '%Smith%' LIMIT 10, 20
Run Code Online (Sandbox Code Playgroud)
另外,我是否正确地认为我可以用这种方式使用CONCAT?
(我很欣赏INNER JOIN可能是错误的JOIN类型.我实际上不知道不同JOIN之间的区别.我现在要调查它!)