-1

テーブルから行を選択する必要があるため、行に番号を付ける必要があります。最初の3行の番号は次のとおりです。

1  
2  
3

その後 (4 行目から)、再び番号付けを開始し、この 2 番目の番号付けがすべてのレコードの最後まで続きます。つまり、結果は次のようになります。

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 に答える