![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
|
UPDATE orderby SET orderby = orderby +10 WHERE groupid = 1; -> FAILS because of UNIQUE INDEX |
|
UPDATE orderby SET orderby = orderby +10 WHERE groupid IN ( SELECT groupid FROM TABLE WHERE group_id = 1 ORDER BY orderby DESC ) |
#2
| |||
| |||
|
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 | UPDATE | orderby SET orderby = orderby +10 | WHERE groupid = 1; | -> FAILS because of UNIQUE INDEX One workaround is to do it in two steps, assuming that orderby is > 0 for all rows you are changing: BEGIN; UPDATE mytable SET orderby = -orderby WHERE groupid = 1; UPDATE mytable SET orderby = -orderby+10 WHERE groupid = 1; COMMIT; |
![]() |
| Thread Tools | |
| Display Modes | |
| |