我在MySQL查询中加入了几个表,它们按员工ID号链接。
表编号在表A和表B中是唯一的,但在表C中有多行,日期(存储为字符串)对于每个条目都是唯一的。
我需要将表C和LIMIT表C中每个员工ID号的最新日期标识为每个ID号一个条目(显然是最近的)。
我不确定如何为每个员工ID号设置LIMIT为1。
感谢您的帮助。
答案 0 :(得分:2)
下面的查询使用子查询为EmployeeID
上的每个tableC
获取每个最近日期。
SELECT a.*, b.*, c.*
FROM tableA a
INNER JOIN tableB b
ON a.EmployeeID = b.EmployeeID
INNER JOIN tableC c
ON a.EmployeeID = c.EmployeeID
INNER JOIN
(
SELECT EmployeeID, MAX(date) max_date
FROM tableC
GROUP BY EmployeeID
) d ON c.EmployeeID = d.EmployeeID AND
c.Date = d.max_date
答案 1 :(得分:0)
根据我在你的问题上的理解:
select a.*, b.*, max(c.date) from A
inner join B on A.id=B.id
inner join C on A.id=C.id
group by A.id
这将按照A的ID对记录进行分组。也就是说,您将在A的每个行的响应中获得一行(因为它们由该ID唯一标识)。 B也是如此,因为它们具有相同的ID。然后,在C中,您在A中每个记录有多个记录,因此对它们进行分组并获得日期的最大值将只返回每个A的C日期(每种情况下它们的最大值)。