使用mysql查询在表中查找第二个最大值

时间:2013-10-18 17:30:09

标签: mysql

我有一个数据库,其中一个名为“user”的表有两个字段:

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

我想编写一个标准的SQL查询,它从“user”表中检索第二个最高值“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)的方式。 感谢

5 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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

使用limit您可以设置偏移量和您想要返回的记录数。

答案 2 :(得分: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);

答案 3 :(得分:0)

怎么'回合

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

答案 4 :(得分:-1)

这可能有效:

select max(id)-1 from user;