Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL jika bukan pembaruan nol

Anda dapat menggunakan case ekspresi untuk ini. Saya pikir logika yang Anda inginkan adalah:

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;

Atau jika Anda ingin memperbarui email dan sandi jika keduanya bukan null lalu:

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;

Sekarang pertanyaan telah diperbarui dan saya mengerti bahwa Anda ingin melakukan pembaruan jika dan hanya jika email dan sandi parameter bukan string kosong. Jadi Anda sebenarnya ingin memfilter . Saya akan mengatakan ini sebagai:

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

Atau jika Anda ingin memisahkan logika untuk kedua parameter:

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. penyimpanan hierarki mysql dengan pohon besar

  2. Apakah fungsi MySQL agregat selalu mengembalikan satu baris?

  3. Percepat Pembaruan MySQL/Sisipkan Pernyataan

  4. Buat database dengan JPA?

  5. Aktifkan koneksi MySQL jarak jauh:ERROR 1045 (28000):Akses ditolak untuk pengguna