Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać If Then Else w zapytaniu aktualizacyjnym MySQL?

Myślę, że byłeś tam w 99%:

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

Dodaj && A > 1 do drugiego wyrażenia IF i trzeci warunek jest spełniony.

Edytuj:

Zgodnie z komentarzem @Andre do pytania i sugestią, że zagnieżdżone IF jest trudny do odczytania, możesz to zrobić również jako kilka zapytań, które nie wykonują niepotrzebnej pracy i są czytelne:

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

Kiedy A jest NULL, nie spełnia żadnego z tych warunków, a tym samym eliminuje potrzebę określania, że ​​A nie będzie NULL.

Następnie nie ma potrzeby wypełniania trzeciego warunku, jak sugerował @Andre. Jeśli A wynosi od 1 do 20, pozostaje bez zmian.

Wreszcie ustawienie A na 0, gdzie A jest mniejsze lub równe 1, wydaje się niezwykłe. Wartości 1 zostaną zmienione na 0. Jeśli zamierzasz po prostu ustawić wartości mniejsze niż 1 (w tym wartości ujemne) na 0, powinieneś zamienić < dla <= .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyszukiwać nazwy zaczynające się na literę A w MySQL?

  2. Wiele zapytań UNION nie działa

  3. SQLite w Androidzie:oczekiwano kluczy obcych i <ograniczenie tabeli>

  4. Jak wybrać zakres wierszy na podstawie wartości pól - MySQL

  5. mysql aktualizuje kolumnę o int na podstawie zamówienia