2013-10-18 57 views
2

我有一個表的數據庫稱爲「用戶」有兩個領域:在表中查找第二最大

"id" (type: INTEGER, PRIMARY KEY) 
"name" (type: VARCHAR(32)) 

我想寫一個標準的SQL查詢來檢索的「第二高值ID「從」用戶「表中。返回的值應該使用列名「id」表示。

我都試過,但它給了我所有的ID:

SELECT `user`.`id` 
FROM `user` 
ORDER BY `user`.`id` ASC 
LIMIT 0 , 30 

一些示例數據在我的表:

id  name 
---------------- 
1  john 
2  david 
3  mike 

我想「2」,但現在我越來越:

id 
---- 
1 
2 
3 

我可以用PHP的幫助,但我想知道與MySQL(SQL)的方式。 感謝

回答

2
SELECT id 
FROM `user` 
ORDER BY id DESC   -- start with highest 
LIMIT 1      -- show only 1 row 
OFFSET 1 ;     -- but skip the first (skip 1 row) 
+0

謝謝你( - :+1 – ncm

1
SELECT id 
FROM `user` 
ORDER BY id ASC 
LIMIT 1, 1 

使用limit你可以設置一個偏移並恢復您喜歡的記錄數。

+3

'LIMIT 1,1'第二。 –

+0

謝謝你那麼容易。( - : – ncm

1
SELECT id FROM user ORDER BY id ASC LIMIT 1, 1 



select max(id) from user where id < (select max(id) from user); 


select max(id) from user where id not in (Select max(id) from user); 
0

怎麼回合

Select max(id) from user 
where id <> (select max(id) from user)