Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL, wenn nicht null aktualisieren

Sie können case verwenden Ausdrücke dafür. Ich denke, dass die Logik, die Sie wollen, ist:

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;

Oder wenn Sie E-Mail und Passwort aktualisieren möchten, wenn beides sind nicht null dann:

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;

Jetzt wurde die Frage aktualisiert und ich verstehe, dass Sie die Aktualisierung durchführen möchten, wenn und nur wenn sowohl E-Mail- als auch Passwort-Parameter sind keine leeren Strings. Sie wollen also tatsächlich filtern . Ich würde das so formulieren:

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

Oder wenn Sie die Logik für beide Parameter trennen möchten:

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;