gpt4 book ai didi

sql - 仅当值不为 nil 时才更新属性

转载 作者:行者123 更新时间:2023-11-29 13:27:08 24 4
gpt4 key购买 nike

我有一个简单的sql语句:

UPDATE people 
SET (updated_at, first_name, last_name, email) =
(now(), r.first_name, r.last_name, r.email)
WHERE id = r.p_id;

我只想在 r.emailnot nil 时设置 email 值。

有什么方法可以在一次查询中完成吗?

最佳答案

我假设这是另一个查询的一部分

您需要添加一个条件。根据不同的 DBMS(PostgreSQL、MySQL),您将需要不同的解决方案。


PostgreSQL

您需要COALESCECOALESCE 函数返回其第一个不为空的参数。

UPDATE people
SET (updated_at, first_name, last_name, email) = (now(), r.first_name, r.last_name,
(COALESCE (r.email, people.email))
FROM people, r
WHERE people.id = r.p_id

MySQL

你需要一个IF条件:

IF (r.email IS NULL, people.email, r.email)

因此您需要执行的查询应该类似于:

UPDATE people
SET (updated_at, first_name, last_name, email) = (now(), r.first_name, r.last_name,
(IF (r.email IS NULL, people.email, r.email))
FROM people, r
WHERE people.id = r.p_id

关于sql - 仅当值不为 nil 时才更新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com