如果where子句与任何内容不匹配,则返回SQL结果

时间:2012-11-01 23:32:40

标签: sqlite android-sqlite

我有一个包含两个表的数据库: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" );

如果在提供的日期存在旅行,则该查询仅返回结果。如果在该日期之后没有一个旅行,我怎样才能修改它以返回下一次旅行?

1 个答案:

答案 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;

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