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

时间:2014-05-08 16:57:44

标签: mysql sql

我有一个名为Wosequence的专栏。截至目前,当我查询时,该列中没有填充任何内容,因为在该列中技术上没有任何内容。我希望用我的结果集做什么。是在前8个结果之后应用迭代器。然后它将使用迭代器的结果填充wosequence。我不需要在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

2 个答案:

答案 0 :(得分:1)

我和

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

答案 1 :(得分:0)

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

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
      )