只有在列为空时才更新列 - 在替换为语句中

时间:2017-02-22 08:28:28

标签: mysql sql

我需要updatecreate我的表格中的新行。我正在使用replace into查询。

对于其中一列,我需要仅在它为null时更新它,否则保持原样。这就是我试过的:

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

但这也不起作用。有解决方案吗

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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