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

Apa yang salah dengan sintaks MySQL CASE/WHEN saya?

Setelah meninjau komentar Anda mengenai pernyataan tetap tetapi masalah kedua langsung, jelas bahwa Anda tidak menggunakan ini dalam prosedur atau fungsi tersimpan. Dokumentasi untuk flow control statements dengan sangat halus menyatakan bahwa mereka harus berada dalam prosedur/fungsi tersimpan.

Perbarui kode Anda agar berada dalam prosedur, lalu panggil prosedur untuk mengeksekusi:

USE mysql;

DROP PROCEDURE p;
DELIMITER |
CREATE PROCEDURE p() BEGIN
    CASE (SELECT COUNT(*) FROM user WHERE User = '' AND Host = 'localhost') 
        WHEN 1 THEN
            DROP USER ''@'localhost';
            FLUSH PRIVILEGES;
        ELSE
            SELECT 'no users found!';
    END CASE;
END;
|

CALL p();

Perhatikan juga bahwa saya menambahkan ELSE catch catch-all memblokir; jika Anda tidak menangkap nilainya, CASE akan memberikan peringatan "Kasus tidak ditemukan" - yang mungkin diinginkan atau tidak.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tetapkan nilai database MySQL ke variabel PHP

  2. Apa arti dari <> dalam kueri mysql?

  3. Pencarian PDO dan MySQL Fulltext

  4. Jika ada, perbarui lagi, masukkan dalam satu kueri

  5. Susun ulang baris catatan database melalui front-end menggunakan php