我有一张桌子如下
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/