我有一张桌子如下

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的结果
有没有其他方法可以达到这个目的,请建议。

最佳答案

您可以使用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

关于mysql - MYSQL获取日期小于给定值的所有结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40405130/

10-16 09:55