-1

私は SQL にかなり慣れていないので、しばらくすると快適に使用できるようになったと思いましたが、それでもまだ難しいです。IDをインクリメントしようとしています。自動インクリメントを使用できることはわかっていますが、この場合、id には複数のカテゴリとの関係があるため、異なる番号で開始する必要があるため、実行できません。

テーブルは次のようになります。

id     category
----------------
1000   1
1000   1
...
2000   2
2000   2
...

そして、私はそれを作りたい:

id     category
------------------
1000   1
1001   1
1002   1
...
2000   2
2001   2
...

私は試した:

UPDATE T1
SET id = CASE 
             WHEN EXISTS (SELECT id FROM STYLE WHERE T1.id = id)
                THEN (SELECT MAX(CAST(id AS INT)) + 1  
                      FROM STYLE 
                      WHERE category = T1.category) 
         END
FROM STYLE T1 
WHERE idStyle = idStyle

しかし、すべての行に 1 を追加しただけです。実際にインクリメントされた最大IDを取得できるように、どうすれば1つずつ進むことができますか? ありがとうございました。

4

2 に答える 2