Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Điều gì sai với cú pháp MySQL CASE / WHEN của tôi?

Sau khi xem xét nhận xét của bạn về câu lệnh đã sửa nhưng vấn đề thứ hai ngay lập tức, rõ ràng là bạn không sử dụng điều này trong một quy trình hoặc hàm được lưu trữ. Tài liệu cho câu lệnh điều khiển luồng tuyên bố rất tinh tế rằng chúng cần phải nằm trong các thủ tục / chức năng được lưu trữ.

Cập nhật mã của bạn để nằm trong một thủ tục, sau đó chỉ cần gọi thủ tục để thực thi:

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();

Cũng lưu ý rằng tôi đã thêm một ELSE tóm tắt tất cả khối; nếu bạn không bắt được giá trị, CASE sẽ đưa ra cảnh báo "Không tìm thấy trường hợp" - điều này có thể mong muốn hoặc không.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. đối sánh mysql với ~ ví dụ

  2. # 1222 - Các câu lệnh SELECT đã sử dụng có một số cột khác nhau

  3. Đồng bộ hóa DB cục bộ lớn với DB máy chủ (MySQL)

  4. Kết nối PDO với cơ sở dữ liệu MySQL bị từ chối

  5. Chọn giá trị số gần nhất với truy vấn MySQL