sql - Rails SQL 查询如果为空

标签 sql ruby-on-rails

我正在尝试通过传入一个值来使用 lambda 函数来执行 Rails 作用域:

"scope :for_rank, lambda {|rank| where('min_rank <= ? AND max_rank >= ?', rank, rank)}"

但是,max_rank 也有可能为空。在这种情况下,我希望查询只执行 最小排名 <= ? 部分。我怎样才能做到这一点?

示例:

"a.min_rank = 10"
"a.max_rank = 20"
"b.min_rank = 15"
"b.max_rank = nil"

我希望 for_rank(15) 的搜索应返回 a 和 b。

最佳答案

试试这个:

 scope :for_rank, lambda {|rank| where('(min_rank <= ? AND max_rank IS NOT NULL AND max_rank >= ?) OR (min_rank <= ? AND max_rank IS NULL)', rank, rank, rank)}

关于sql - Rails SQL 查询如果为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188761/

相关文章:

php - 看起来 SQL 的 WHERE 子句和 JOIN 不能一起工作

ruby-on-rails - rails : Custom nested controller actions

ruby-on-rails - 通过 Rails 3 模板设置 RVM gemset

ruby-on-rails - 如何将 unicorn 用作 "rails s"?

mysql - SQL 查询为 1 个值匹配 2 行

java - 有没有像数据库解决方案/库这样的 SVN 是开源的并且可以与 Java 配合使用?

mysql - sql查询性能不佳

c# - 可以从存储过程中编写 DAL 参数集合吗?

ruby-on-rails - Rails 3 按出现次数选择不同的顺序

html - 如何在 Ruby on Rails 中添加背景图片