如何在mysql中获得第二高和低于值?

时间:2017-04-08 07:30:12

标签: mysql phpmyadmin subquery

如何使所有值低于最高值。即第二高,第三高......等等。

Get 14 and 12

我想选择id = 14和12.条件是第二和第三高的id值section = 'abc'

我的查询是这样的:select id from tbl_front_post where id IN (SELECT id from tbl_front_post where id < max(id)-1 and section = 'abc')

注意:我无法写id=15所以id = max(id)-1,因为ID可能随时更改

3 个答案:

答案 0 :(得分:2)

使用子查询查找最大值:

select id
from tbl_front_post
where id < (SELECT MAX(id) from tbl_front_post where section = 'abc') and
      section = 'abc'
-- order by id desc
-- limit 2     -- for 2nd and 3rd, or however many results you want

如果id列仅针对每个部分具有唯一值,则此方法可以正常工作。在这种情况下,我们不必担心最大id的关联。

答案 1 :(得分:2)

您可以使用ORDER BYLIMIT来执行此操作。

SELECT id
FROM tbl_front_post
WHERE section = 'abc'
ORDER BY id DESC
LIMIT 2, 2

LIMIT x, y表示从订单中的行#y开始返回x行。

答案 2 :(得分:1)

试试这样:

SELECT * FROM tbl_front_post
WHERE section = 'abc' order by id desc LIMIT 1, 18446744073709551615;

这将为您提供section = "abc"的所有行,除了第一行到最后。

NB 18446744073709551615只是一个很大的数字,表示您希望所有行都结束; check the manual

  

从特定偏移量检索所有行直到结束   结果集,你可以使用一些大数字作为第二个参数。