2017-02-22 51 views
0

我需要在我的表中新建一行updatecreate。我正在使用replace into查詢。只有在它爲空的情況下更新列 - 內部替換爲語句

對於其中一列,只有當它爲空時,我才需要更新它,否則保持原樣。這是我試過的:

replace into table name (..some columns..) values (..some values.. , 

IF(creation_time is null, STR_TO_DATE('2017/02/21 18:25:51', '%Y-%m-%d %H:%i:%s'), '') 

但這不起作用。我也嘗試將此代碼插入replace into

SET creation_time = CASE 
    WHEN creation_time is null THEN STR_TO_DATE('2022-02-20 15:40:58', '%Y-%m-%d %H:%i:%s') 
    ELSE NULL 
END 

但是這也不起作用。任何解決方案

+1

拿什麼 「不工作」?在你的第二個查詢中,如果它們不是NULL,則用NULL覆蓋這些值,那是你想要做什麼的? – RoundFour

+0

即使它不爲null,creation_time也會更新。 – Eddy

+0

然後執行ELSE creation_time而不是ELSE NULL,並在末尾添加「WHERE creation_time爲null」。 – RoundFour

回答

0

creation_time不爲空,則應該通過自身設置:

SET creation_time = CASE 
    WHEN creation_time is null THEN STR_TO_DATE('2022-02-20 15:40:58', '%Y-%m-%d %H:%i:%s') 
    ELSE creation_time 
END 

或者你也可以只使用where

SET creation_time = STR_TO_DATE('2022-02-20 15:40:58', '%Y-%m-%d %H:%i:%s') 
WHERE creation_time IS NULL 
+0

我收到語法錯誤。這是我查詢中的相關代碼片段:'... value,value,SET creation_time = STR_TO_DATE('2022-02-20 15:40:58','%Y-%m-%d%H:%i: %s') WHERE creation_time IS NULL );' – Eddy

1

在你的第二個片段你覆蓋CREATION_TIME的值如果它們不是NULL,則爲NULL。 您應該將'ELSE NULL'替換爲'ELSE creation_time'。

SET creation_time = CASE 
    WHEN creation_time is null THEN STR_TO_DATE('2022-02-20 15:40:58', '%Y-%m-%d %H:%i:%s') 
    ELSE creation_time 
END 

或者只是使用一個WHERE子句結尾:

SET creation_time = STR_TO_DATE('2022-02-20 15:40:58', '%Y-%m-%d %H:%i:%s') 
WHERE creation_time IS NULL 
+0

嗨Toby,謝謝你的寶貴意見。我剛剛編輯了我的答案。 – RoundFour

相關問題