Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mise à jour SQL si non nulle

Vous pouvez utiliser case expressions pour cela. Je pense que la logique que vous voulez est :

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;

Ou si vous souhaitez mettre à jour l'e-mail et le mot de passe si les deux ne sont pas null puis :

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;

Maintenant, la question a été mise à jour et je comprends que vous souhaitez effectuer la mise à jour si et seulement si les paramètres d'e-mail et de mot de passe ne sont pas des chaînes vides. Donc, vous voulez réellement filtrer . Je formulerais ceci comme :

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

Ou si vous souhaitez séparer la logique des deux paramètres :

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;