使用Rails(ActiveRecord)查询2012年的最后一行+ 2013年的所有行+ 2014年的第一行-最佳实践



我找到了使用以下条件从数据库获取行的最佳实践解决方案:

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,但应该很容易移植。

这对我有用,只有postgresYEAR(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))

最新更新