2013-10-18 80 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) 
相关问题