0

我有一个名为的表tbltimpunch,其中包含以下列:

  • employeeID(不是主键/不是 auto inc)
  • dateoftime(一天中的时间)
  • timein(员工输入的时间)
  • timeout(下班时间)

可以使用以下mysql创建:

CREATE TABLE tbltimpunch(
    `employeeID` varchar(10),
    `dateoftime` datetime,
    `timein` time,
    `timeout` time
);

我怎样才能得到员工的最后一个timein或输入?timeout

4

1 回答 1

0

这个怎么样?

SELECT employeeID, MAX(timein) AS lastIn, MAX(timeout) AS lastOut
FROM tbltimpunch
GROUP BY employeeID;

这将返回一个结果集,其中包含每个员工(表中有数据)的一行,以及他们的最后一次时间和超时值。

更新

此解决方案可能更接近您正在寻找的内容:

SELECT t1.* FROM tbltimpunch t1
LEFT JOIN tbltimpunch t2 ON t1.employeeID=t2.employeeID
GROUP BY t1.employeeID, t1.dateoftime
HAVING t1.dateoftime=MAX(t2.dateoftime);

这将为每个具有最新 dateoftime 值的员工返回一行。

试试小提琴,在这里:http ://sqlfiddle.com/#!2/ca4f3/1/0

于 2013-06-11T22:14:16.610 回答