9

我正在尝试将在 Microsoft SQL Server 中创建以使用链接服务器运行的 SQL 脚本转换为可在 SQL 过程中使用的脚本,我正在使用的脚本

ROW_NUMBER() OVER(ORDER BY [FIELDS])

创建一个不依赖于自动增量的主键,当我尝试将代码保存为过程时,我收到此错误

错误 1064 (42000):您的 SQL 语法有错误:检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在 [LINENO] 行的“(ORDER BY [FIELDS])”附近使用

显然错误是说 ROW_NUMBER OVER 不正确,因为我删除了 OVER 位并得到一个错误,说 ROW_NUMBER 未定义

在我搜索的任何地方,我什么都没有得到,但人们在 SELECT 语句中询问这个问题,而不是 INSERT 语句,并且大多数时候的答案只是获取行数或插入最后一个 id,所以我可以用什么来创建与 Microsoft Server 中的 ROW_NUMBER() 相同的数据

4

1 回答 1

18

不幸的是,在 MySQL 中没有ROW_NUMBER()等价物,但您仍然可以通过创建一个简单的变量来模拟它,该变量保存一个值并在每一行递增。

例子:

SET @rank=0;
SELECT   @rank := @rank+1 AS rank, fruit, amount
FROM     sales
ORDER BY amount DESC;
于 2012-08-15T03:46:26.470 回答