繁体   English   中英

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

[英]find second max in a table using mysql query

我有一个数据库,其中一个表称为“用户”,具有两个字段:

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

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)
SELECT id
FROM `user`
ORDER BY id ASC
LIMIT 1, 1

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

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);

怎么样

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

这可能起作用:

select max(id)-1 from user;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM