2017-02-22 45 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

相关问题