使用 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'
我需要查询一个 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'