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

标签 sql ruby-on-rails sqlite activerecord

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

2012 年的最后一行
从 2013 年开始的所有行
和 2014 年的第一行

这可以通过 Rails 中的一个查询来解决吗?

我不知道如何通过一个查询来做到这一点,但只使用 3 个查询。

谢谢。

最佳答案

这是一种方法。我并不是说它是最好的或 super 优化的,这取决于您的数据和索引。

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

关于sql - 使用 Rails(ActiveRecord) 查询 2012 年的最后一行 + 2013 年的所有行 + 2014 年的第一行 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521219/

相关文章:

MySQL - 选择第一个/最后一个不同的行

c++ - 我可以进行异步 ODBC 调用吗?有引用资料吗?

sql - 计算字符串中实例的数量

ruby-on-rails - 在Rails3中覆盖到/(根)的资源路由: not changing the path helper?

java - 在 JAVA 中解析大型 XML 文档

ios - XCode 项目名称是否与 CoreData 的 sqlite 存储相同?

sql - 针对附加数据库运行 sql 脚本?

ruby-on-rails - rails : How to get a model to "inherit" attributes from a parent model?

javascript - 使用 Ruby 爬取 Javascript 繁重的网站

Android - 使用 db.enableWriteAheadLogging 方法获取 java.lang.NoSuchMethodError