2013-02-26 111 views
0

我有一張桌子,上面有兩個木偶的獨特約束。REPLACE INTO ... ON DUPLICATE KEY UPDATE

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。我無法意識到,怎麼了,請幫助我。

順便說一句:有沒有更好的方法來達到預期的效果?

回答

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 
+0

但是'VALUES(order_column)'始終爲0! – k102 2013-02-26 11:50:12

+0

如果你執行'ON DUPLICATE KEY UPDATE order_column = order_column + 1' – 2013-02-26 11:50:45

+0

錯誤是'Column'order_column'在字段列表中不明確' – k102 2013-02-26 11:55:59

相關問題