在ruby on rails活动记录查询中查找第二大元素的更好方法

bhmjp9jg  于 2023-06-22  发布在  Ruby
关注(0)|答案(2)|浏览(118)

我使用这个查询来查找第二大元素。我正在查询value列。

Booking.where("value < ?", Booking.maximum(:value)).last

还有比这更好的查询吗?或者其他替代品。
PS -value不是唯一的。可能有两个元素具有相同的值

hof1towb

hof1towb1#

这个应该能用

Booking.select("DISTINCT value").order('value DESC').offset(1).limit(1)

这将生成以下查询:

SELECT  DISTINCT value FROM "bookings"  ORDER BY value DESC LIMIT 1 OFFSET 1
2vuwiymt

2vuwiymt2#

可以使用offsetlast

Booking.order(:value).offset(1).last

这将产生以下SQL语句:

SELECT  `bookings`.* FROM `bookings`  
ORDER BY `bookings`.`value` DESC 
LIMIT 1 OFFSET 1

相关问题