使用 SQL 中的日期查询 table

Querying table with dates in SQL

我需要查询一个 MySQL 数据库 table,如下所示:

Bike  Owner  Date
-----------------------
1     Oscar  2014-02-02
2     Oscar  2014-02-02
3     John   2014-04-28
4     Jane   2014-05-29
2     John   2015-04-16
3     Mike   2015-06-16
1     Bob    2015-07-16
4     John   2015-08-16
2     Mike   2016-04-16
3     John   2016-04-16

它包含 4 辆自行车,一旦自行车从主人手中转移,新记录就会放置在 table 中。由于此 table 没有 'until' 属性,因此我无法创建一个查询来获取特定日期(例如 2015 年 7 月 6 日)所有自行车的所有车主。

现在有人知道如何以简单的方式做到这一点吗?我可以通过创建函数或临时 table 来想办法做到这一点,但是对于这样一个简单的问题来说这似乎太牵强了。

谢谢!

一种方法使用显式 join 和聚合:

select b.*
from (select bike, max(date) as maxdate
      from bikes b
      where date <= '2015-07-06
      group by bike
     ) bd join
     bikes b
     on b.bike = bd.bike and b.date = bd.maxdate;

一种更短的写法:

select b.*
from bikes b
where b.date = (select max(b2.date) from bikes b2 where b2.bike = b.bike);

如果我正确理解了您的要求,那么这是非常直接的前言查询,在特定日期获取所有自行车所有者

select b.*
from bikes b
where CAST(b.date AS DATE) = '2015-07-06'