我需要查询如下所示的MySQL数据库表:
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辆自行车,一旦自行车从所有者处切换,该表中便会放置一条新记录。由于此表没有'until'属性,因此我将继续创建一个查询,以在特定日期(例如2015-07-06)获取所有自行车的所有所有者。
现在有人可以轻松地做到这一点吗?我可以想到通过创建函数或临时表来实现此目的的方法,但是对于这样一个简单的问题,这似乎太牵强了。
谢谢!
最佳答案
一种方法使用显式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);
关于mysql - 在SQL中用日期查询表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36645617/