1

我有一个包含两个表的数据库:tripsdays. 中的每个条目days都有一个对应于 中的条目的 id trips

我想运行一个查询,该查询将返回在提供的日期发生的行程,如果在该日期没有发生,则返回该日期之后的下一次行程。这是我当前的查询(daystring在代码中生成,假设它是一个有效的 SQL 日期字符串):

SELECT _id, number, date 
FROM trips 
INNER JOIN days ON trips._id = days.trips_id 
WHERE days.date > DATE( daystring, "start of day", "-1 day" ) 
  AND days.date < DATE( daystring, "start of day", "+1 day" );

但是,该查询仅在提供的日期存在旅行时才返回结果。仅当该日期没有行程时,如何修改它以返回该日期之后的下一次行程?

4

1 回答 1

3
SELECT _id, number, date FROM trips INNER JOIN days ON trips._id = days.trips_id 
WHERE days.date > DATE( daystring, "start of day", "-1 day" ) 
order by date Limit 1;

是一个快速修复。如果您没有索引,可能需要日期列上的索引。

于 2012-11-01T23:44:58.863 回答