我实际上尝试通过此请求获得表的第二高值:
SELECT MIN(`mensualite`) AS min, MAX(`mensualite`) AS max FROM `mensualites`
WHERE((`financement` = "1200")
AND (`mensualite` < ( SELECT MAX(`mensualite`) FROM `mensualites`)))
但不幸的是,它仍然获得最高价值,而不是第二。你知道我的问题在哪里吗?
这是另一种方法:
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”表示第二行)。
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")
这假设如果最大值出现两次,您希望最大值小于最大值。如果您希望在这种情况下获得最大值,则必须使用基于排序的解决方案。