如何在mysql中获取行号?
我正在制作一个跟踪应用程序,我想向用户显示他/她在哪个地方。为此,我考虑按“totalkm”desc进行排序,然后获取行号。问题是我不知道怎么做,因为我对数据库世界还相当陌生 我试过这样的方法:如何在mysql中获取行号?,mysql,sql,database,Mysql,Sql,Database,我正在制作一个跟踪应用程序,我想向用户显示他/她在哪个地方。为此,我考虑按“totalkm”desc进行排序,然后获取行号。问题是我不知道怎么做,因为我对数据库世界还相当陌生 我试过这样的方法: WITH mytable AS { SET @row_number = 0; SELECT (@row_number := @row_number +1) AS num, user,totalkm FROM profile ORDER BY totalkm DESC ; } SE
WITH mytable AS {
SET @row_number = 0;
SELECT (@row_number := @row_number +1) AS num, user,totalkm
FROM profile ORDER BY totalkm DESC ; }
SELECT num
FROM mytable WHERE user = "bogdan9832";
但我得到了一个错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“mytable AS”附近的正确语法{
在第1行设置@row_number=0
据我所知,mysql中不支持WITH。有人能给我一个替代方案吗?对于相同的查询,您必须使用以下查询:- 首先将变量声明为:-
SET @row_number = 0;
然后使用此查询:-
SELECT (@row_number:= @row_number + 1) AS ROW_NUMBER, OTHER_COLS
FROM YOUR_TABLE;
选择num、user、totalkm
从(
挑选(
@行号:=@行号+1
)作为num、user、totalkm
从侧面
按总公里数下单
)作为一个
其中user=“bogdan9832”使用子查询,但仅使用单个SQL语句:-
SELECT num
FROM
(
SELECT (@row_number := @row_number +1) AS num, user, totalkm
FROM
(
SELECT banner.*
FROM profile
ORDER BY totalkm DESC
) profile
CROSS JOIN (SELECT @row_number := 0) sub0
) sub0
WHERE user = "bogdan9832"
你必须使用变量。看一看