admin

不为空时更新字段

sql

我有一条更新语句,用于更新ID = xx的字段x,y和z。

在表中,我有几个不同的x_created_datetime字段(用于由不同人员维护/输入的记录的不同部分)。我想编写一个查询,如果为null则将更新此字段,但如果不为null则将其保留。

所以我有:

UPDATE newspapers
SET scan_notes = "data",
    scan_entered_by = "some_name",
    scan_modified_date = "current_unix_timestamp"
WHERE id = X

我需要的是一种添加以下内容的方法,但始终会更新上面的内容:

scan_created_date = "current_unix_timestamp"
where scan_created_date is null

我希望我可以在不进行第二次事务处理的情况下就可以做到这一点。关于如何做到这一点的任何想法?


阅读 176

收藏
2021-05-10

共1个答案

admin

做这个:

UPDATE newspapers
SET scan_notes = "data",    
  scan_entered_by = "some_name",    
  scan_modified_date = "current_unix_timestamp",
  scan_created_date = COALESCE(scan_created_date, "current_unix_timestamp")
WHERE id = X

COALESCE函数选择第一个非空值。在这种情况下,它将把datestamp
scan_created_date更新为相同的值(如果存在),否则将使用您替换"current_unix_timestamp"的所有内容。

2021-05-10