2012-03-04 47 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

相關問題