0

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から始まる増分整数が含まれます。私はこのようにしようとしています:0client

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、最後の行に着きます。何が悪いのかわからないので、助けてください。

ところで:望ましい結果を達成するためのより良い方法はありますか?

4

1 に答える 1

0
INSERT INTO targets (id, client, order_column) 
SELECT  a.id, a.client , 0 as order_column 
FROM    targets a
        ON DUPLICATE KEY
        UPDATE order_column = a.order_column + 1
于 2013-02-26T11:41:44.707 に答える