在 rails 活动记录查询中找到 ruby 中第二大元素的更好方法
Better method to find the second largest element in ruby on rails active record query
我正在使用此查询查找第二大元素。我正在查询 value
列。
Booking.where("value < ?", Booking.maximum(:value)).last
还有比这更好的查询吗?或者任何替代方案。
PS - value
不是唯一的。可能有两个具有相同值的元素
您可以使用 offset
和 last
:
Booking.order(:value).offset(1).last
这将产生以下 SQL 语句:
SELECT `bookings`.* FROM `bookings`
ORDER BY `bookings`.`value` DESC
LIMIT 1 OFFSET 1
这应该有效。
Booking.select("DISTINCT value").order('value DESC').offset(1).limit(1)
这将生成此查询:
SELECT DISTINCT value FROM "bookings" ORDER BY value DESC LIMIT 1 OFFSET 1
我正在使用此查询查找第二大元素。我正在查询 value
列。
Booking.where("value < ?", Booking.maximum(:value)).last
还有比这更好的查询吗?或者任何替代方案。
PS - value
不是唯一的。可能有两个具有相同值的元素
您可以使用 offset
和 last
:
Booking.order(:value).offset(1).last
这将产生以下 SQL 语句:
SELECT `bookings`.* FROM `bookings`
ORDER BY `bookings`.`value` DESC
LIMIT 1 OFFSET 1
这应该有效。
Booking.select("DISTINCT value").order('value DESC').offset(1).limit(1)
这将生成此查询:
SELECT DISTINCT value FROM "bookings" ORDER BY value DESC LIMIT 1 OFFSET 1