2 つのフィールドに一意の制約を持つテーブルがあります。
CREATE TABLE `targets` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`client` SMALLINT(6) UNSIGNED NOT NULL,
-- some more fields here
`order_column` INT(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `client_order_column` (`client`, `order_column`)
)
そして今、それを更新したいと思います。これには、すべての値order_column
から始まる増分整数が含まれます。私はこのようにしようとしています:0
client
replace into targets (
`id`,
`client` ,
`order_column`
)
(select
`id`,
`client` ,
0 as order_column from targets
)
on duplicate key update
order_column = order_column + 1
しかしsyntax error
、最後の行に着きます。何が悪いのかわからないので、助けてください。
ところで:望ましい結果を達成するためのより良い方法はありますか?