Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为一组ID选择上一条记录_Mysql_Sql - Fatal编程技术网

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;