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

SQL, ако не е нулева актуализация

Можете да използвате case изрази за това. Мисля, че логиката, която искате, е:

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;

Или ако искате да актуализирате имейл и парола, ако и двете не са null след това:

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;

Сега въпросът беше актуализиран и разбирам, че искате да извършите актуализацията ако и само ако и имейл, и парола параметри не са празни низове. Така че всъщност искате филтриране . Бих формулирал това като:

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

Или ако искате да разделите логиката за двата параметъра:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Стойност на постоянна колона в MySQL таблица

  2. Разделяне на Datetime на стойност за дата и час

  3. mysql, ifnull срещу coalesce, кое е по-бързо?

  4. Хибернация - Не е намерен подходящ драйвер за jdbc:mysql//*

  5. Изберете * от таблицата, където дата =днес