如何使所有值低于最高值。即第二高,第三高......等等。
我想选择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可能随时更改
答案 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 BY
和LIMIT
来执行此操作。
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:
从特定偏移量检索所有行直到结束 结果集,你可以使用一些大数字作为第二个参数。