-1

我需要从表中选择行,对行进行编号:前 3 行编号为:

1  
2  
3

之后(从第四行开始),再次开始编号,第二次编号继续到所有记录的末尾,即结果必须是这样的:

1  
2  
3  
1  
2  
3  
4  
5  
……  
……  
777

我写了这个查询,但这会返回通常的编号,从 1 到最后一条记录。

请有人告诉我,我的查询在哪里逻辑错误?在我看来,这将返回麻木,正如我上面所写

mysql-> SET @n = 0
mysql-> SET @start_again = 'true'


SELECT 

        CASE 
            WHEN  @n = 3 AND @start_again = 'true' THEN  @n := 1
            ELSE @n := @n + 1
        END,

        CASE 
            WHEN  @n = 3 AND @start_again = 'true' THEN  @start_again := 'false'
        END

FROM mytable
4

1 回答 1

1

你的任务过于复杂了。

SET @n = 0
SELECT if((@n := @n + 1) > 3, @n - 3, @n) AS n ...
于 2012-09-18T11:07:16.753 回答