oracleやsqlserverでは、項目毎に連番を付与する関数が提供されている。
◆row_number関数
SELECT 商品コード , ROW_NUMBER() OVER ( PARTITION BY 商品コード ORDER BY 商品コード DESC ) ROW FROM shouhin_tbl ;
mysqlでは上記関数が無い為、以下で対応。
◆concat_ws関数を利用
SELECT t.商品コード , @row_num := IF(@prev_value=concat_ws('',t.商品コード),@row_num+1,1) as row ,@prev_value := concat_ws('',t.商品コード) as prev_value FROM shouhin_tbl t, (SELECT @row_num := 1) x, (SELECT @prev_value := '') y ORDER BY t.商品コード ;
