我需要从表中选择行,使编号行如此:前3行编号为:
1 2 3
和之后(从第四行开始),再次开始编号,第二个编号继续到所有记录的结尾,结果必须是这样的:
1 2 3 1 2 3 4 5 .... .... 777
我写了这个查询,但这会返回通常的编号,从1到最后一条记录。
请有人告诉我,我的查询中哪些逻辑错误?在我看来,这将返回numbring,正如我在上面写的那样
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
答案 0 :(得分:1)
你的任务太复杂了。
SET @n = 0
SELECT if((@n := @n + 1) > 3, @n - 3, @n) AS n ...