我正在尝试将在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中相同的数据
不幸的是,ROW_NUMBER()MySQL中没有等效项,但是您仍然可以通过创建一个简单的变量来模拟它,该变量包含一个值,该值每行递增一次。
ROW_NUMBER()
例:
SET @rank=0; SELECT @rank := @rank+1 AS rank, fruit, amount FROM sales ORDER BY amount DESC;