回答

3

这应该工作。

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

将产生此查询:

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

这也将工作: 'Booking.select(“DISTINCT value”)。order(“value DESC OFFSET 1 LIMIT 1”)' –

4

您可以使用offsetlast

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

将产生下面的SQL语句:

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

尝试。 如果有两个值相等的元素并且这两个元素都具有最大值,该怎么办? 'offset(1)'可能不起作用 – Kangkan

+3

您应该指定这个要求,因为_第二大元素_和第二大唯一元素_不是相同的。 – Ilya

+0

for none unique maximum elements problem我认为在查询中指定DISTINCT选项将解决它。 –