我有一条更新语句,用于更新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
我希望我可以在不进行第二次事务处理的情况下就可以做到这一点。关于如何做到这一点的任何想法?
做这个:
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"的所有内容。
COALESCE
"current_unix_timestamp"