我有一张表格如下
Eid joinDate
1 01-01-2016
2 01-01-2016
3 28-02-2016
4 28-02-2016
5 28-02-2016
6 15-02-2016
7 15-02-2016
我希望得到最新日期的所有数据结果。
例如:如果我将' 28-02-2016 '作为输入,那么结果应为
3 28-02-2016
4 28-02-2016
5 28-02-2016
如果我将' 18-02-2016 '作为输入,结果应为
1 15-02-2016
2 15-02-2016(Most recent from 18-02-2016)
我尝试使用以下查询,但它只返回一个结果。
select Eid,max(joinDate) from Employee where joinDate<='18-02-2016'
但是这个查询没有返回所有结果。此外,如果我使用group by那么它将返回低于18-02-2016的所有结果
有没有其他方法可以达到这个目的,请提出建议。
答案 0 :(得分:1)
您可以使用LEFT JOIN
执行此操作:
SELECT t1.Eid, t1.joinDate
FROM Employee AS t1
LEFT JOIN Employee AS t2 ON t2.joinDate > t1.joinDate AND t2.joinDate <= '2016-02-16'
WHERE t1.joinDate <= '2016-02-16' AND t2.Eid IS NULL
答案 1 :(得分:0)
您可以使用WHERE
子句中的子查询在MySQL中执行此操作:
select e.*
from employees e
where e.joindate = (select max(e2.joindate)
from employees e2
where e2.joindate <= '2016-02-28'
);