sql >> Base de Datos >  >> RDS >> Mysql

SQL si no es una actualización nula

Puedes usar case expresiones para esto. Creo que la lógica que quieres es:

UPDATE users 
SET 
    username = Param1
    email = case when email is not null then Param2 end,
    password = case when password is not null then Param3 end
WHERE id = Param4;

O si desea actualizar el correo electrónico y la contraseña si ambos no son null entonces:

UPDATE users 
SET 
    username = Param1
    email = case when email is not null and password is not null then Param2 end,
    password = case when email is not null and password is not null then Param3 end
WHERE id = Param4;

Ahora la pregunta se actualizó y entiendo que desea realizar la actualización si y solo si los parámetros de correo electrónico y contraseña no son cadenas vacías. Entonces realmente quieres filtrar . Yo expresaría esto como:

UPDATE users 
SET username = Param1, email = Param2, password = Param3 
WHERE id = Param4 and Param2 <> '' and Param3 <> ''

O si desea separar la lógica de ambos parámetros:

UPDATE users 
SET 
    username = Param1, 
    email = case when Param2 <> '' then Param2 else email end, 
    password = case when Param3 <> '' then Param3 else password end
WHERE id = Param4;