LoginSignup
2
4

More than 5 years have passed since last update.

sqlでプライマリキーをまとめてUPDATEする

Posted at

sqlでプライマリキーをまとめてUPDATEする時、クエリの書き方によってはプライマリキーが重複してエラーになってしまう。
ここでは、SQL ServerとMySQLについてのクエリを書く。

テーブルデータ(処理前)

id(PRIMARY KEY) name
1 name_1
2 name_2
3 name_3
4 name_4
5 name_5

テーブルデータ(処理後)

id(PRIMARY KEY) name
2 name_1
3 name_2
4 name_3
5 name_4
6 name_5

MySQLの場合は、ORDER BYを使用してidを降り順に設定する。
(5→6, 4→5, ・・・, 1→2の処理順)
設定しないとidが重複してエラーになる。

MySQL.sql
UPDATE tbSample SET id = id + 1
ORDER BY id DESC

SQLServerの場合は、そのまま書けばよい。
自動でやってくれるっぽい。
逆にORDER BYを書くとエラーになる。

SQLServer.sql
UPDATE tbSample SET id = id + 1
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4