[英]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.