我有一个包含两个表的数据库: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" );
如果在提供的日期存在旅行,则该查询仅返回结果。如果在该日期之后没有一个旅行,我怎样才能修改它以返回下一次旅行?
答案 0 :(得分: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;
是一个快速修复。如果您没有索引,可能需要日期列上的索引。