Mysql 为一组ID选择上一条记录
我有这样一个问题:Mysql 为一组ID选择上一条记录,mysql,sql,Mysql,Sql,我有这样一个问题: SELECT id, id_employee, hours FROM WorkHours WHERE hours > 8; 如何为此查询选择的每个员工工作记录选择以前的员工工作记录 所以,对于这样的表(id,id\u员工,小时): 将选择记录3、6和9。我还需要记录1、5、7。基本上,每次有人加班,我都想看看此人在以前记录的一天中有多少小时。您可以使用相关子查询获得以前的id: SELECT wh.id, wh.id_employee, wh.hours,
SELECT id, id_employee, hours FROM WorkHours WHERE hours > 8;
如何为此查询选择的每个员工工作记录选择以前的员工工作记录
所以,对于这样的表(id,id\u员工,小时):
将选择记录3、6和9。我还需要记录1、5、7。基本上,每次有人加班,我都想看看此人在以前记录的一天中有多少小时。您可以使用相关子查询获得以前的
id
:
SELECT wh.id, wh.id_employee, wh.hours,
(SELECT MAX(wh2.id)
FROM WorkHours wh2
WHERE wh2.id_employee = wh.id_employee AND wh2.id < wh.id
) as prev_id
FROM WorkHours wh
WHERE wh.hours > 8;
“以前的员工工作记录”是什么意思?对于每个返回的id,相同id的以前id\u员工显示您的数据和预期结果。请阅读并解释您想要的输出是否应该选择MAX(wh2.id)?@Sergi0。是的,谢谢(或者
按wh2.id描述限额1订购)。
SELECT wh.id, wh.id_employee, wh.hours,
(SELECT MAX(wh2.id)
FROM WorkHours wh2
WHERE wh2.id_employee = wh.id_employee AND wh2.id < wh.id
) as prev_id
FROM WorkHours wh
WHERE wh.hours > 8;
SELECT eh.*, wh.*
FROM (SELECT wh.id, wh.id_employee, wh.hours,
(SELECT MAX(wh2.id)
FROM WorkHours wh2
WHERE wh2.id_employee = wh.id_employee AND wh2.id < wh.id
) as prev_id
FROM WorkHours wh
WHERE wh.hours > 8
) eh LEFT JOIN
WorkHours wh
ON wh.id_employee = eh.id_employee;