sql - Update attribute only when value is not nil -
i have simple sql statement:
update people set (updated_at, first_name, last_name, email) = (now(), r.first_name, r.last_name, r.email) id = r.p_id;
i want set email
value when r.email
not nil
.
is there way in 1 query?
i assume part of query
you need add conditional. depending on dbms (postgresql, mysql) need different solutions.
postgresql
you'll need coalesce. coalesce
function returns first of arguments not null.
update people set (updated_at, first_name, last_name, email) = (now(), r.first_name, r.last_name, (coalesce (r.email, people.email)) people, r people.id = r.p_id
mysql
you'll need if condition:
if (r.email null, people.email, r.email)
so query need perform should similar to:
update people set (updated_at, first_name, last_name, email) = (now(), r.first_name, r.last_name, (if (r.email null, people.email, r.email)) people, r people.id = r.p_id
Comments
Post a Comment