选择MySQL中第二高的值

选择MySQL中第二高的值,mysql,sql,select,Mysql,Sql,Select,实际上,我尝试通过此请求获取表的第二高值: SELECT MIN(`mensualite`) AS min, MAX(`mensualite`) AS max FROM `mensualites` WHERE((`financement` = "1200") AND (`mensualite` < ( SELECT MAX(`mensualite`) FROM `mensualites`))) 但不幸的是,它仍然获取最高值,而不是第二个值。你知道我的问题出在哪里吗?这里有一个替代方法

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

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

这里有一种替代方法:

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
当使用offset时,行从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")
这假设如果最大值出现两次,您希望最大值小于最大值。如果您希望在这种情况下获得最大值,则必须使用基于排序的解决方案。

将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")

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

Awesome!谢谢你的快速回答!令人惊叹的谢谢你的快速回答!我将使用ptityeti的解决方案,但感谢您的全面回答!我将使用ptityeti的解决方案,但感谢您的全面回答!