我有一个包含两个表的数据库:trips
和days
。 days
中的每个条目都有一个与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;
是一个快速修复。如果您没有日期,则可能需要在日期列上建立索引。