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

MySQL CASE...WHERE...THEN pernyataan

Bukan CASE harus memiliki lebih dari satu, WHEN...THEN , itu harus menangani semua data yang Anda berikan.

Jika Anda menghapus salah satu klausa, Anda meninggalkan lubang. misalnya

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;

Dengan pernyataan pembaruan ini, jika parkFK adalah 2, maka pembaruan gagal karena CASE tidak dapat menangani input.

Anda dapat membatasi data sumber Anda dengan menambahkan baris lain ke klausa where Anda (mis. AND partFK in (1,2) ), atau Anda dapat menambahkan ELSE ke ekspresi kasus.

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
  WHEN partFK = 2 THEN 8
  ELSE 12 
END
WHERE buildFK = 1;

Namun, berdasarkan pernyataan SQL yang Anda tunjukkan, mungkin ada cara yang lebih baik. Agaknya, partFK adalah kunci asing ke beberapa tabel lain. Bisakah Anda menarik nilai untuk quantity dari sana?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat database di MySQL

  2. Saya ingin menambahkan 30 hari ke baris tanggal mysql

  3. Pilih beberapa jumlah dengan kueri MySQL dan tampilkan di kolom terpisah

  4. Bisakah Anda mengakses nilai kenaikan otomatis di MySQL dalam satu pernyataan?

  5. Laravel Tidak dapat menghapus atau memperbarui baris induk:batasan kunci asing gagal