0

要执行范围查询,我们遵循类似于以下语法的内容 - :

oms[:order_items].where(:internal_sla => 3..5) results in this query
 => #<Sequel::Mysql2::Dataset: "SELECT * FROM `order_items` WHERE ((`internal_sla` >= 3) AND (`internal_sla` <= 5))"> 

但是我怎样才能改变活动记录查询给我这样的东西=>select internal_sla from order_items where (internal_sla<=3 and internal_sla>=0) OR (internal_sla<=15 and internal_sla>=10)

4

2 回答 2

1
.where("(internal_sla >= ? AND internal_sla <= ? OR 
internal_sla >= ? AND internal_sla <= ? )", 0, 3, 10, 15).pluck(:internal_sla)

评论后更新

如果 internal_sla 是整数,您可以:

.where(:internal_sla => (0..3).to_a + (10..15).to_a).pluck(:internal_sla)

编辑:修正错字

于 2013-03-20T07:18:55.603 回答
0

这有效

oms[:order_items].where(:internal_sla => [0..3, 10..15])
于 2013-03-20T07:23:33.260 回答