2017-09-19 52 views
0

我有一個4列的表。我想按順序將值B插入每列。我不想立即填寫所有欄目。MYSQL如何按順序填充列

如果查找col2中的值,則下面的查詢將填充col3和col4。我不想那樣。

INSERT INTO table (col1,col2) 
VALUES ('a','b') 
ON DUPLICATE KEY 
UPDATE col3='b', col4='b' 

下面的查詢不起作用的原因很明顯,但如何在前一列包含數據的情況下按順序更新列?

INSERT INTO table (col1,col2) 
VALUES ('a','b') 
ON DUPLICATE KEY 
UPDATE col3='b' 
ON DUPLICATE KEY 
UPDATE col4='b' 
+1

這沒有意義。重複的關鍵事件要麼發生,要麼不發生,它不會分階段播放。 – tadman

+0

也許它誤導重複密鑰。我只想更新一列,如果存在值,則更新下一列,如果值存在,請更新最後一列... – user2287640

+0

這種問題可能是設計不佳的症狀 – Strawberry

回答

0

如果你只是想用來填充尚未分配值:

... UPDATE col3=IFNULL(col3, 'b'), 
    col4=IFNULL(col4, 'b'), 

甚至更​​好,重新寫它做它作爲一個完整的插入,如果你的意思是分配col3col4無論如何:

INSERT INTO _table (col1, col2, col3, col4) VALUES ('a', 'a', 'b', 'b') 
    ON DUPLICATE KEY UPDATE col3=IFNULL(col3, VALUES(col3)), 
    col4=IFNULL(col4, VALUES(col4))