Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按条件对行进行编号_Mysql - Fatal编程技术网

Mysql 按条件对行进行编号

Mysql 按条件对行进行编号,mysql,Mysql,我需要从表中选择行,使行编号为:前3行编号为: 1 2 3 你的任务过于复杂了 SET @n = 0 SELECT if((@n := @n + 1) > 3, @n - 3, @n) AS n ... 您遇到了什么错误?我没有获得错误,此查询有效,但不正确,它返回从1到最后一条记录的所有编号。但我需要从第四排开始重新编号,这与你的另一个问题有什么区别:–哪个答案被标记为正确?@feeela,在旧问题中我需要这个编号:1,2,3,1,2,3,1,2,3。在这个问题中,我问,如何进

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

1 2 3
你的任务过于复杂了

SET @n = 0
SELECT if((@n := @n + 1) > 3, @n - 3, @n) AS n ...

您遇到了什么错误?我没有获得错误,此查询有效,但不正确,它返回从1到最后一条记录的所有编号。但我需要从第四排开始重新编号,这与你的另一个问题有什么区别:–哪个答案被标记为正确?@feeela,在旧问题中我需要这个编号:1,2,3,1,2,3,1,2,3。在这个问题中,我问,如何进行这个编号:1,2,3,1,2,3,4,5,6,7…。谢谢,但如果可以,请告诉我,我的问题中有什么不正确?为什么不正确?因为当
@n
为2时,第一个
案例
看到它不是3并将其递增为3,然后第二个
案例
看到它是3并将
@start\u再次重置为false。在下一次迭代中,
@n
为3,但
@start\u再次
已为false;第一个
案例
从未看到
@n
为3且
@start\u再次
同时为真的情况。
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
SET @n = 0
SELECT if((@n := @n + 1) > 3, @n - 3, @n) AS n ...