2017-04-08 86 views
0

如何獲取低於最高值的所有值。即第二高,第三高等等....如何獲得第二高和低於MySQL值?

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可以在任何時候改變

+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的關係。

+0

我需要第二高和第三高等 –

2

您可以使用ORDER BYLIMIT來執行此操作。

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

LIMIT x, y意味着返回y行從順序列#x開始。

+0

不應該是'''1,18446744073709551615'; 即。除了第一個到最後 – dsharew

+0

不錯的主意,但可以有任何數量的行..現在有3行的section ='abc'。但是行數可以隨時chnaged。 –

1

嘗試這樣的:

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

這會給你的所有行與section = "abc",除第一個到最後。

NB18446744073709551615只是一個很大的數字,表示您希望所有行都結束; check the manual

爲了取回一定的所有行偏移到
結果集的末尾,你可以使用一些大量的第二個參數。