sql >> Databasteknik >  >> RDS >> Mysql

SQL om inte null uppdatering

Du kan använda case uttryck för detta. Jag tror att logiken du vill ha är:

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;

Eller om du vill uppdatera e-post och lösenord om båda är inte null sedan:

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;

Nu har frågan uppdaterats och jag förstår att du vill utföra uppdateringen om och bara om både e-post och lösenord parametrar är inte tomma strängar. Så du vill faktiskt ha filtrering . Jag skulle formulera detta som:

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

Eller om du vill separera logiken för båda parametrarna:

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;


  1. PostgreSQL sparar datum i 'Lokal tidszon' medan jag ställer in det på 'UTC' med Django

  2. FEL 1349 (HY000):View's SELECT innehåller en underfråga i FROM-satsen

  3. Hur ansluter man till en fjärrbaserad MySQL-databas med Java?

  4. Ta bort rader med Laravel-frågebyggaren och LEFT JOIN