【问题标题】:MYSQL get all the results of a date less than given valueMYSQL获取小于给定值的日期的所有结果
【发布时间】:2017-03-17 06:02:51
【问题描述】:

我有一张如下表

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

有没有其他方法可以做到这一点,请建议。

【问题讨论】:

标签: mysql


【解决方案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

SQL Demo here

【讨论】:

    【解决方案2】:

    您可以在 MySQL 中通过在 WHERE 子句中使用子查询来执行此操作:

    select e.*
    from employees e
    where e.joindate = (select max(e2.joindate)
                        from employees e2
                        where e2.joindate <= '2016-02-28'
                       );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2011-06-01
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 2019-04-13
      相关资源
      最近更新 更多