2013-02-26 124 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

相关问题