mkzyk
@mkzyk

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

あるカラムで重複している値をカウントし、その値を用いて別カラムをUPDATEする方法について

解決したいこと

重複した値のカウント値を使って他カラムの値をUPDATEする方法について、
SQLのみでどうやって実現できるのか知りたいです!

前提

  • idカラムは複数の重複データが存在する(何個重複しているかは不明)
  • idカラムは歯抜けになっている可能性あり
  • another_idカラムは全てnull値

初期テーブル

id another_id
1 null
1 null
1 null
2 null
2 null
2 null
2 null
... ...
N null
  • another_idカラムには下記のような重複値のcount値をSETしたい

更新前

id another_id duplicate_cnt
1 null 1
1 null 2
1 null 3
2 null 1
2 null 2
2 null 3
2 null 4
... ... ...
N null X

更新後(やりたいこと)

id another_id duplicate_cnt
1 1 1
1 2 2
1 3 3
2 1 1
2 2 2
2 3 3
2 4 4
... ... ...
N X X

自分で試したこと

  • Stackoverflow に掲載されているSQLで、count値を取得することまではできた
SELECT 
  t.*, 
  @i:=IF(id=@id, @i+1, 1) AS num, 
  @id:=id 
FROM 
  t 
  CROSS JOIN (SELECT @i:=0, @id:=0) AS init 
ORDER BY id
  • 上記SQLをサブクエリと使用する?しかし、全てのレコード件数に対しての複数値を返すので、それをどう使ってanother_idカラムをUPDATEしたらよいのかわからない

以上です。単なるSQLの知識不足は否めないのですが、ぜひとも解決方法を知って知識にしたいので、ご教授頂けると幸いです!

0

No Answers yet.

Your answer might help someone💌