0

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

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

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

4

2 回答 2

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”表示第二行)。

于 2013-05-30T13:31:31.820 回答
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")

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

于 2013-05-30T13:36:13.870 回答