一尘不染

MySQL中等效的ROW_NUMBER()用于插入

mysql

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

ROW_NUMBER() OVER(ORDER BY [FIELDS])

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

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

显然,该错误表明ROW_NUMBER OVER不正确,原因是我删除了OVER位并收到一条错误消息,指出ROW_NUMBER未定义

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


阅读 219

收藏
2020-05-17

共1个答案

一尘不染

不幸的是,ROW_NUMBER()MySQL中没有等效项,但是您仍然可以通过创建一个简单的变量来模拟它,该变量包含一个值,该值每行递增一次。

例:

SET @rank=0;
SELECT   @rank := @rank+1 AS rank, fruit, amount
FROM     sales
ORDER BY amount DESC;
2020-05-17