Mysql 在前8个结果之后的列中添加迭代器编号

Mysql 在前8个结果之后的列中添加迭代器编号,mysql,sql,Mysql,Sql,我有一个专栏叫Wosequence。到目前为止,当我查询时,该列中没有填充任何内容,因为从技术上讲,该列中没有任何内容。我希望如何处理我的结果集。是在前8个结果之后应用迭代器。然后,它将用迭代器的结果填充wosequence。我不需要在序列中插入数据。我只需要在结果集中填充wosequence 我可以做两个不同的查询。一个用于前8个查询,然后在另一个查询上进行Union,该查询将获得剩余的结果集。我只是好奇如何实现迭代器函数来填充我的wosequence列 表格 wonum parent

我有一个专栏叫Wosequence。到目前为止,当我查询时,该列中没有填充任何内容,因为从技术上讲,该列中没有任何内容。我希望如何处理我的结果集。是在前8个结果之后应用迭代器。然后,它将用迭代器的结果填充wosequence。我不需要在序列中插入数据。我只需要在结果集中填充wosequence

我可以做两个不同的查询。一个用于前8个查询,然后在另一个查询上进行Union,该查询将获得剩余的结果集。我只是好奇如何实现迭代器函数来填充我的wosequence列

表格

wonum     parent     taskid     wosequence  
=====     ======     ======     ========
10        0          10
20        0          20       
30        0          30
..        ..         ..  

90        0          90   
100       0          100
所需输出

wonum     parent     taskid     wosequence
=====     ======     ======     ========
10        0          10
20        0          20       
30        0          30
..        ..         ..  
                                    <------iterator would begin and insert its value
90        0          90         1
100       0          100        2
110       0          110        3
wonum父任务ID WO序列
=====     ======     ======     ========
10        0          10
20        0          20       
30        0          30
..        ..         ..  
我会和你一起去

SELECT 
    CASE 
        WHEN ROW_NUMBER() > 7 
    THEN 
        ROW_NUMBER()-7 
    ELSE 
        '' 
END AS Wosequence
, colum2, column3 
FROM dbo.abc [..]

由于mysql中没有行号,您可以从子查询中获取行号,然后执行检查:

SELECT
  wonum,
  parent,
  taskid,
  CASE
    WHEN Wosequence >=8
    THEN Wosequence
    FROM
      (
        SELECT
          wonum,
          parent,
          taskid,
          @row_number:=@row_number+1 AS Wosequence
        FROM
          table1,
          (
            SELECT
              @row_number:=0
          ) AS t
      )

这个解决方案有效。我想添加您必须在ROW_NUMBER()函数之后添加以包含OVER(诸如此类)。