我找到了使用以下条件从数据库获取行的最佳实践解决方案:
2012年的最后一行所有行都来自2013年2014年的第一行
是否可以通过Rails中的一个查询来解决。
我不知道如何通过一个查询,但只使用3个查询。
谢谢。
这是一种方法。我并不是说它是最好的或超级优化的,但这取决于你的数据和索引。
@measurements = Measurement.find_by_sql(
%{select * from measurements
where date_part('year', date) = 2013
or date = (select max(date) from rounds where date_part('year', date) = 2012)
or date = (select min(date) from rounds where date_part('year', date) = 2014)
order by date})
编辑:我看到你正在使用sqlite,这适用于Postgres,但应该很容易移植。
这对我有用,只有postgres
和YEAR(dt)
是date_part('year',dt)
。简单明了……
Measurement.where("YEAR(dt)=2013 or dt=? or dt=?",
Measurement.where("YEAR(dt)=2012").maximum(:dt),
Measurement.where("YEAR(dt)=2014").minimum(:dt))