Mysql 自定义行编号

Mysql 自定义行编号,mysql,Mysql,我希望在从表中选择时对数据行进行编号。问题是,我不需要顺序编号,但它应该从1到3再到结尾进行编号,如下所示: 1 | first row 2 | second row 3 | third row 1 | fourth row 2 | and 3 | .... 1 2 3 我正在尝试此查询,但它无法正常工作: mysql -> SET @n = 0; -> SELECT CASE WHEN nnn = 3 THEN @n := 0 ELSE nnn

我希望在从表中选择时对数据行进行编号。问题是,我不需要顺序编号,但它应该从1到3再到结尾进行编号,如下所示:

1 | first row
2 | second row
3 | third row 
1 | fourth row
2 | and
3 | ....
1
2
3
我正在尝试此查询,但它无法正常工作:

mysql -> SET @n = 0;
-> SELECT 
CASE 
    WHEN nnn = 3 THEN  @n := 0
        ELSE nnn
    END
FROM  (
    SELECT @n := @n + 1 AS nnn FROM mytable
) AS t;

如何使其正常工作?

根据以下答案改编:


根据这个答案改编:


如果您只需要选择并假设有列,比如说“id”,这是连续的,那么下面的查询应该会有所帮助:

SELECT IF ((id%3) = 0, 3 , (id%3)) AS new_id, <other columns> FROM <table_name>;
从中选择IF((id%3)=0,3,(id%3))作为新的\u id;

希望它有帮助…

如果您只需要选择并假设有列,比如“id”,这是连续的,那么下面的查询应该会有所帮助:

SELECT IF ((id%3) = 0, 3 , (id%3)) AS new_id, <other columns> FROM <table_name>;
从中选择IF((id%3)=0,3,(id%3))作为新的\u id;
希望对你有帮助