MYSQL获取日期小于给定值的所有结果

时间:2016-11-03 15:13:10

标签: mysql

我有一张表格如下

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的所有结果

有没有其他方法可以达到这个目的,请提出建议。

2 个答案:

答案 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

Demo here

答案 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'
                   );