我有一个包含两个表的数据库:tripsdaysdays中的每个条目都有一个与trips中的条目相对应的ID。

我想运行一个查询,该查询将返回在提供的日期发生的行程,如果在该日期没有发生,则返回该日期之后的下一次行程。这是我当前的查询(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" );


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

最佳答案

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;


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

08-18 12:04
查看更多