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