3

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

"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) 的方式。谢谢

4

5 回答 5

3
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)
于 2013-10-18T17:40:10.350 回答
2
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);
于 2013-10-18T17:33:17.767 回答
1
SELECT id
FROM `user`
ORDER BY id ASC
LIMIT 1, 1

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

于 2013-10-18T17:31:16.733 回答
0

怎么样

Select max(id) from user
where id <> (select max(id) from user)
于 2013-10-18T17:37:27.050 回答
-1

这可能有效:

select max(id)-1 from user;
于 2019-01-17T14:34:31.857 回答