Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам If Then Else в заявка за актуализиране на MySQL?

Мисля, че бяхте 99% там:

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

Добавете && A > 1 към втория оператор IF и третото ви условие е изпълнено.

Редактиране:

Според коментара на @Andre към въпроса и предложението, че вложеният IF е труден за четене, можете също да направите това като няколко заявки, които не вършат никаква ненужна работа и са четими:

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

Когато A е NULL, то няма да отговаря на нито едно от тези условия и по този начин елиминира необходимостта да се указва, че A не е NULL.

След това няма нужда от третото условие, както предложи @Andre. Ако A е между 1 и 20, то се оставя както е.

И накрая, задаване на A на 0, където A е по-малко или равно на 1, изглежда необичайно. Стойностите от 1 ще бъдат променени на 0. Ако възнамерявате просто да зададете стойности по-малки от 1 (включително отрицателни стойности) на 0, тогава трябва да размените < за <= .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java Spring REST API Обработка на много допълнителни параметри

  2. Изтриването на ред от изглед изтрива ли ред от основната таблица - MySQL?

  3. MySQL / PHP - Намерете налични времеви слотове

  4. Намиране на дублиращи се стойности в MySQL

  5. вмъкване на данни в mysql база данни с помощта на php