Mysql 如何在查询中获得第二个更高的数字

Mysql 如何在查询中获得第二个更高的数字,mysql,Mysql,例如,假设我有一个与下一个类似的表: id | start | userId 1 3 1 2 2 2 3 5 1 现在,我想获取与某个userId相关的列start的第二个较高值的所有行信息。因此,如果userId等于1我希望得到下一个结果: (id, start, userId) = (1,3,1) 我尝试了以下查询: SELECT id, max(start) FROM table_user WHERE userId =

例如,假设我有一个与下一个类似的表:

id | start | userId
1      3       1
2      2       2
3      5       1
现在,我想获取与某个
userId
相关的列
start
的第二个较高值的所有行信息。因此,如果
userId
等于
1
我希望得到下一个结果:

(id, start, userId) = (1,3,1)
我尝试了以下查询:

SELECT id, max(start) FROM table_user WHERE userId = 1;

但是这给了我一个更高的数字。

您可以通过按列排序
开始
限制
的功能轻松做到这一点,如下所示:

SELECT
    *
FROM
    table_user
WHERE
    userId = 1
ORDER BY
    `start` DESC LIMIT 1, 1

您也可以在线查看此信息:

您可以通过按列排序
开始
限制
的功能轻松完成此操作,如下所示:

SELECT
    *
FROM
    table_user
WHERE
    userId = 1
ORDER BY
    `start` DESC LIMIT 1, 1

您也可以在线检查:

但我需要按用户进行筛选,但我需要按用户进行筛选您的查询甚至不是有效的SQL..我使用它没有问题是的,因为MySQL扩展了
groupby
功能请尝试使用
SET SESSION SQL\u mode=(选择CONCAT(@@SQL\u mode',仅“FULL\u GROUP\u by”)
然后看什么..您的查询甚至不是有效的SQL..我使用它没有问题是的,因为MySQL扩展了
分组方式
功能,请尝试使用
设置会话SQL_模式=(选择CONCAT(@@SQL_模式,',仅“完全的分组方式”)并查看。。