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

SQL, jeśli nie jest pusta aktualizacja

Możesz użyć case wyrażenia do tego. Myślę, że logika, której potrzebujesz, to:

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;

Lub jeśli chcesz zaktualizować adres e-mail i hasło, jeśli oba nie są null następnie:

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;

Teraz pytanie zostało zaktualizowane i rozumiem, że chcesz przeprowadzić aktualizację wtedy i tylko wtedy, gdy zarówno adres e-mail, jak i hasło parametry nie są pustymi ciągami. Więc naprawdę chcesz filtrować . Wyraziłbym to jako:

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

Lub jeśli chcesz oddzielić logikę dla obu parametrów:

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. Operand powinien zawierać 1 kolumnę – MySQL NIE JEST

  2. czy posiadanie w nich milionów tabel i milionów wierszy jest powszechną praktyką w projektowaniu baz danych MySQL?

  3. Zapytanie MySQL dla wielu tabel, które są tabelami pomocniczymi wieloma elementami?

  4. PDO wysyła surowe zapytanie do MySQL, podczas gdy Mysqli wysyła przygotowane zapytanie, oba dają ten sam wynik

  5. Ta sama nazwa dla pól formularza i pól tabeli bazy danych?