mysql - 通过存储过程分配行号

标签 mysql sql vb.net stored-procedures

如何通过MySQL存储过程分配Row_number以及选择,我可以使用MS-SQL来完成,如下所述:

CREATE PROCEDURE [dbo].[GetCustomersPageWise]
      @PageIndex INT = 1
      ,@PageSize INT = 10
      ,@PageCount INT OUTPUT
AS
BEGIN
      SET NOCOUNT ON;
      SELECT ROW_NUMBER() OVER
            (
                  ORDER BY [CustomerID] ASC
            )AS RowNumber
         INTO #Results
      FROM [Customers]
END

我的问题是..

  • 如何初始化MySQL中的参数(例如:@PageIndex INT = 1)
  • MySQL中如何实现

    SELECT ROW_NUMBER() OVER ( 按 [客户 ID] ASC 排序 )AS 行号

我尝试过的

  • 当我喜欢这样的时候

    创建过程 'dbo'.'GetCustomersPageWise'(p_PageIndex INT = 1,p_PageSize INT = 10,p_PageCount INT OUTPUT) 导致错误 =1 附近的语法不正确

  • 我也尝试过

    选择 ROW_NUMBER() 超过; ( 按“客户 ID”ASC 排序 )AS 行号

    导致错误为 脚本行:4 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'ORDER BY product_gid ASC 附近使用的正确语法 )AS 行号 product_gid, ' 在第 8 行

最佳答案

CREATE PROCEDURE [dbo].[GetCustomersPageWise]
      @PageIndex INT = 1
      ,@PageSize INT = 10
      ,@PageCount INT OUTPUT
AS
BEGIN
      SET @ROW_NUMBER= 0;
      Insert INTO Results SELECT @ROW_NUMBER:= @ROW_NUMBER+ 1
      FROM Customers
END

这样就可以达到你预期的效果了。

关于mysql - 通过存储过程分配行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26229864/

相关文章:

mysql - 选择从 Y 行开始的 X 行

mysql - 如何删除 mysql 查询中的尾随或前导字符?

mysql - 计算某些列的平均值,不计算空值

vb.net - 透明列表框或列表框

mysql 调整查询以显示我的表的所有记录

mysql - 如何将 NodeJs 响应转换为嵌套的 json 响应

sql - Postgresql:触发函数使其可编辑,如可更新 View

sql - 如何在 Rails 迁移中使用 GREATEST 和 LEAST?

vb.net - list<Of T> 上的多种排序

c# - 在 .Net 中阻塞一个线程