我需要update
或create
我的表格中的新行。我正在使用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
但这也不起作用。有解决方案吗
答案 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