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

Hvordan bruger man If Then Else i en MySQL-opdateringsforespørgsel?

Jeg tror, ​​du var 99 % der:

UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;

Tilføj && A > 1 til den anden IF-sætning, og din tredje betingelse er opfyldt.

Rediger:

Per @Andres kommentar til spørgsmålet og forslaget om, at den indlejrede IF er svært at læse, kan du også gøre dette som et par forespørgsler, der ikke gør noget unødvendigt arbejde og er læsbare:

UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;

Når A er NULL, vil den ikke opfylde nogen af ​​disse betingelser, og dermed eliminerer behovet for at specificere, at A ikke er NULL.

Dernæst er der ikke behov for den tredje betingelse, som @Andre foreslog. Hvis A er mellem 1 og 20, efterlades den som den er.

Endelig virker det usædvanligt at sætte A til 0, hvor A er mindre end eller lig med 1. Værdier af 1 vil blive ændret til 0. Hvis du har til hensigt blot at sætte værdier mindre end 1 (inklusive negative værdier) til 0, så skal du bytte < for <= .



  1. php mysql få variable data fra databasen og beregne

  2. Hvordan kan jeg lave en FØR OPDATERET trigger med sql server?

  3. Hvordan krypteres adgangskoden i Oracle?

  4. Overtrædelse af PRIMÆR NØGLE-begrænsning