2012-03-04 45 views
1

我还没有找到这样做的语法,我觉得令人沮丧的是,我没有看到任何明确表示无法完成的事情,所以我继续搜索。mysql在DUPLICATE KEY UPDATE上。是否可以将INSERT语句中的值作为实体而不是一次一个字段引用?

与表“table_one”,用一个独特的领域“table_one.a”这是主键,是有可能做这样的事情:

INSERT INTO `table_one` (a,b,c,d,e,f,g,h) VALUES (1,2,3,4,5,6,7,8) 
    ON DUPLICATE KEY UPDATE VALUES(); 

我知道以下方法:

INSERT INTO `table_one` (a,b,c,d,e,f,g,h) VALUES (1,2,3,4,5,6,7,8) 
    ON DUPLICATE KEY UPDATE `b` = '2', `c` = '3', `d` = '4', `e` = '5', `f` = '6', `g` = '7', `h` = '8'; 

而且

INSERT INTO `table_one` (a,b,c,d,e,f,g,h) VALUES (1,2,3,4,5,6,7,8) 
    ON DUPLICATE KEY UPDATE `b` = 'VALUES(b)', `c` = 'VALUES(c)', `d` = 'VALUES(d)', `e` = 'VALUES(e)', `f` = 'VALUES(f)', `g` = 'VALUES(g)', `h` = 'VALUES(h)'; 

我希望(如果这是不可能的),有人能婆把我解释为解释原因的参考。

回答

2

这是不可能的,因为它违反了UPDATE语法,所以你必须列出每一列。您可以使用REPLACE INTO进行调查,但要小心,因为实际上会删除该行并重新添加该行,因此可能会丢失一些值 - 它也会触发外键ON DELETE s。然而,这是一个不太冗长的方式去做你想做的事情。

+0

你可以在REPLACE INTO中使用VALUES是让我烦恼的原因,你不能使用ON DUPLICATE KEY UPDATE。我会接受“是什么”,并继续在我的肩膀上少一点重量。好的工作提到使用REPLACE INTO的缺陷。 – codewaggle 2012-03-04 03:03:30

1

不,it's not possible

没有任何参考解释了原因:没有任何语法可以让您做到这一点。

+0

我花了几个小时寻找有关这个问题的信息,感觉有点尴尬关于丢失这样一个类似的请求。 – codewaggle 2012-03-04 03:09:31

相关问题