0

テーブルから選択するときにデータ行に番号を付けたいと思います。問題は、連続した番号を付ける必要がないことですが、以下のように 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;

正しく動作させるには?

4

2 に答える 2

3

この回答からの適応: MySQL では、テーブル内のレコード インデックスを含む列をどのように生成できますか?

SELECT  MOD(@curRow := @curRow + 1, 3) AS row_number
FROM    mytable m
JOIN    (SELECT @curRow := 0) r;
于 2012-09-17T12:46:49.017 に答える
1

選択する必要があるだけで、「id」などの列があると仮定すると、それはシーケンシャルである場合、次のクエリが役立ちます。

SELECT IF ((id%3) = 0, 3 , (id%3)) AS new_id, <other columns> FROM <table_name>;

それが役に立てば幸い...

于 2012-09-17T13:26:24.290 に答える