sql >> Databasteknik >  >> RDS >> Mysql

Hur använder man If Then Else i en MySQL-uppdateringsfråga?

Jag tror att du var 99 % där:

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

Lägg till && A > 1 till det andra IF-uttrycket och ditt tredje villkor är uppfyllt.

Redigera:

Per @Andres kommentar till frågan och förslaget att den kapslade IF är svår att läsa, du kan också göra detta som ett par frågor som inte gör något onödigt arbete och är läsbara:

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

När A är NULL kommer det inte att uppfylla något av dessa villkor och eliminerar därför behovet av att ange att A inte är NULL.

Därefter finns det inget behov av det tredje villkoret som @Andre föreslog. Om A är mellan 1 och 20, lämnas det som det är.

Slutligen verkar det ovanligt att sätta A till 0 där A är mindre än eller lika med 1. Värden på 1 kommer att ändras till 0. Om du avser att helt enkelt ställa in värden mindre än 1 (inklusive negativa värden) till 0, bör du byta < för <= .



  1. Vilka MySQL-drivrutiner finns tillgängliga för node.js?

  2. URL-strängformat för att ansluta till Oracle-databas med JDBC

  3. Få alla användare utom administratörer i många-till-många-relationer

  4. Finns det någon mening med att använda LIMIT i EXISTS-frågan?