我需要在MySQL命令行,并根据该订单号码指定给每一行。 ORDER BY
是否按预期运行,但不ROW_NUMBER()
。
这工作:
USE my_database;
SELECT
id
,volume
FROM my_table
ORDER BY volume;
这不起作用:
USE my_database;
SELECT
id
,volume
,ROW_NUMBER() over(ORDER BY volume)
FROM my_table
ORDER BY volume;
我收到此错误信息:
SELECT ID,卷,ROW_NUMBER()OVER(ORDER BY卷)FROM MY_TABLE ORDER BY量错误代码:1064您的SQL语法错误;检查对应于你的MySQL服务器版本正确的语法在第4行0.000秒附近使用“(ORDER BY卷)FROM MY_TABLE ORDER BY第一卷”手册
我在做什么错了,我如何工作的呢?
我也试过RANK()
和DENSE_RANK()
这给了同样的问题。
有没有这样的事情在MySQL ROW_NUMBER()
或RANK()
。尝试以下方法:
USE my_database;
SET @row_number = 0;
SELECT id
, volume
, @row_number := @row_number + 1 AS rank
FROM my_table
ORDER BY volume;
函数ROW_NUMBER()不会在MySQL存在。
但是,您可以复制它,可能是:http://www.mysqltutorial.org/mysql-row_number/
所述ROW_NUMBER是排名函数返回一个行的一个顺序编号,从1开始的第一行。我们经常要使用ROW_NUMBER函数来产生我们所需要的具体报告。不幸的是,MySQL不提供ROW_NUMBER如Microsoft SQL Server和Oracle。然而,在MySQL中,你可以使用会话变量来模拟ROW_NUMBER函数。
例:
SET @row_number = 0;
SELECT
(@row_number:=@row_number + 1) AS num, firstName, lastName
FROM
employees
LIMIT 5;