2017-07-08 6 views
0

異なる、以前の私は、これまでに次のクエリを持っている場合は、自動increamentを作成します。MySQLの簡単なselect文、行の値が1

私に次のように出力
SET @cnt = 0; 
SELECT (
    @cnt := @cnt +1 
) AS rowNumber, brand 
FROM `cars` 

rowNumber | brand 
1   | fiat 
2   | fiat 
3   | fiat 
4   | bmw 
5   | bmw 
6   | mercedes 
7   | mercedes 
8   | tesla 
9   | tesla 

しかし、私がしたいです達成:

rowNumber | brand 
1   | fiat 
1   | fiat 
1   | fiat 
2   | bmw 
2   | bmw 
3   | mercedes 
3   | mercedes 
4   | tesla 
4   | tesla 

これをどのように達成できますか?

答えて

1

あなたは別の変数使用してこの操作を行うことができます。

select (@rn := if(@b = brand, @rn, 
        if(@b := brand, @rn + 1, @rn + 1) 
       ) 
     ) as rowNumber, brand 
from `cars` c cross join 
    (select @b := '', @rn := 0) params 
order by brand; 
+0

私が望んだとおりに動作します!どうもありがとうございました! – domi771

関連する問題