sql >> Database teknologi >  >> RDS >> Mysql

SQL hvis ikke null opdatering

Du kan bruge case udtryk for dette. Jeg tror, ​​at den logik, du ønsker, er:

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 hvis du vil opdatere e-mail og adgangskode hvis begge er ikke null derefter:

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 blev spørgsmålet opdateret, og jeg forstår, at du vil udføre opdateringen, hvis og kun hvis både e-mail og adgangskode parametre er ikke tomme strenge. Så du vil faktisk have filtrering . Jeg vil formulere dette som:

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

Eller hvis du vil adskille logikken for begge parametre:

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. Hvordan accepterer jeg brugerinput i en loop i oracle 10g?

  2. Hvad skal du kontrollere, hvis MySQL I/O-udnyttelsen er høj

  3. PHP PDO initialisering mislykkes på grund af dobbelt port - Ufanget PDO Undtagelse:SQLSTATE[HY000] [2002]

  4. Er der nogen ækvivalent til Postgresql HVER aggregatfunktion på andre RDBMS?