选择MySQL中的第二高值

时间:2013-05-30 13:28:52

标签: mysql sql select

我实际上尝试使用此请求获得表的第二高值:

SELECT MIN(`mensualite`) AS min, MAX(`mensualite`) AS max FROM `mensualites`
WHERE((`financement` = "1200") 
AND (`mensualite` < ( SELECT MAX(`mensualite`) FROM  `mensualites`)))

但不幸的是,它仍然取得最高值,而不是第二位。你知道我的问题在哪里吗?

2 个答案:

答案 0 :(得分:3)

这是另一种方法:

select mensualite
from (select distinct mensualite
      from mensualites
      WHERE `financement` = "1200"
      order by mensuality desc
      limit 2
     ) m
order by mensuality
limit 1

它选择子查询中的前两个值。然后它命令他们升序并选择最上一行。

然而,偏移更容易:

     select distinct mensualite
      from mensualites
      WHERE `financement` = "1200"
      order by mensuality desc
      limit 1, 1

(使用偏移时,行开始计数为0而不是1,因此“1”表示第二行)。

答案 1 :(得分:1)

还将WHERE子句添加到子查询

SELECT MIN(`mensualite`) AS min, MAX(`mensualite`) AS max FROM `mensualites`
WHERE `financement` = "1200" 
AND `mensualite` < ( SELECT MAX(`mensualite`) FROM  `mensualites` WHERE `financement` = "1200")

这假设如果最大值出现两次,则希望最大值小于最大值。如果您希望在这种情况下获得最大值,则必须使用基于订购的解决方案。