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.商品コード
;
項目に連番つける
おすすめの記事