所以我有一个表users,其中有用户Balances和IDs.
使用下面的查询,我得到了我需要的表--它根据用户的余额对用户进行排序.

SET @row_num=0; SELECT (@row_num:=@row_num+1) AS serial_num, ID, Balance FROM users ORDER BY Balance DESC;-返回下表:

Resulting MYSQL table

How would I find the 100 of a specific user from the above table by 101?

我已经try 了SELECT * FROM ( the query above ) WHERE ID = "...";,但我一定是语法有问题,我不太明白如何在这里实现一个子查询.
干杯

推荐答案

你实际上只有1个LIKE错误,这导致了一个未初始化的变量.替换

SET @row_num=0;

使用

SET @row_num:=0;

可以在一个查询中运行的较短版本为:

SELECT * 
FROM
(
   SELECT ID, Balance, @row := @row + 1 AS serial_num
   FROM users 
   CROSS JOIN (SELECT @row := 0) r
   ORDER BY Balance DESC
) tmp
WHERE serial_num = 2

SQLFiddle demo

Mysql相关问答推荐

mysql使用LIKE查找二进制字段有问题

对具有依赖子查询结果的2列使用等式比较来优化连接

MySQL连接序列

从MySQL JSON列中检索数组中的所有答案

MySQL Group by或Distinct in Window函数

根据现有行 Select 月份日期

如何在 MySQL 中对同一个表的多个列进行 INNER JOIN

从 NextJS/Prisma 添加用户 ID (FK) 到 MySQL 表

如何从mysql中的不可用日期范围获取可用日期范围?

MySQL如何在触发器内部 Select 多行然后插入它们

global max_connections 和 spring.hikari.maximumPoolSize 有什么区别?

任何值的 SQL WHERE 子句?

如何 Select 具有最新的 2 个日期字段的行?

插入二进制数据会导致Data too long for column...

如何在任何连续范围内获得最大值

我将如何构建一个 SQL 查询来从交易表中 Select 第一次存款、第二次存款和额外存款

由于在 MySQL 中使用保留字作为表名或列名导致的语法错误

PHP MySQLI 防止 SQL 注入

MySQL 在每个唯一值第一次出现时 Select 行

从 MySQL 中的日、月、年字段创建日期