当前位置: 首页 > 面试题库 >

MySQL中等效的ROW_NUMBER()用于插入[重复]

西门伟
2023-03-14
问题内容

这个问题已经在这里有了答案

MySQL中的ROW_NUMBER()
(24个答案)

7年前关闭。

我正在尝试将在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中没有等效项,但是您仍然可以通过创建一个简单的变量来模拟它,该变量包含一个值,该值每行递增一次。

例:

SET @rank=0;
SELECT   @rank := @rank+1 AS rank, fruit, amount
FROM     sales
ORDER BY amount DESC;
  • SQLFiddle演示


 类似资料:
  • 问题内容: MySQL中有没有复制SQL Server函数的好方法? 例如: 然后,例如,我可以添加一个条件以将限制限制为1,以获得每对最高的一行。 问题答案: 我想要每对(col1,col2)对具有最高col3的行。 这是一个按组的最大值,是最常提出的SQL问题之一(因为它看起来应该很容易,但实际上并非如此)。 我经常为null-self-join充实: “获取表中没有匹配col1,col2的其

  • 问题内容: 我需要进行查询并与一年中的所有日子一起加入,但是在我的数据库中没有日历表。 谷歌搜索后,我在PostgreSQL中找到了。MySQL有类似的东西吗? 我的实际表有这样的东西: 但是我的查询必须返回: 问题答案: 这就是我的方法。它创建了从 2011-01-01 到 2011-12-31 的日期范围: 唯一的要求是 any_table中 的行 数 应大于或等于所需范围的大小(在此示例中,

  • 问题内容: 我需要使用以下查询创建group by子句: 但我想在左边的一栏返回我:1、2、3、4、5等。在MSSql中我会做 这可能吗? 问题答案:

  • 问题内容: 在MySQL中,当另一个值=时,我希望能够进行搜索。在MySQL中用于拆分字符串的语法是什么?在PHP中,我可能会使用并将它们放在一起。有没有办法在MySQL中做到这一点? 背景:我正在研究体育比分,并且想尝试分数相同(并且在同一日期)的比赛-每个球队列出的分数与对手的数据库记录相比是倒数的。 理想的MySQL调用是: (需要向后)。 问题答案: MYSQL没有内置类似函数。但是您可以

  • 我有以下结构 和3个查询 解释我为什么只有第一个作品???? 我一辈子都在用第三个!

  • 问题内容: 我正在尝试将一些JavaScript代码从MicrosoftAjax移到JQuery。我在MicrosoftAjax中使用了流行的.net方法中的JavaScript等效项,例如String.format(),String.startsWith()等。jQuery中是否具有等效项? 问题答案: ASP.NET AJAX的源代码可供您参考,因此您可以仔细阅读它,并将要继续使用的部分包含在