sql >> データベース >  >> RDS >> Mysql

MySQL CASE / WHEN構文の何が問題になっていますか?

    修正されたステートメントに関するコメントを確認しましたが、すぐに2番目の問題が発生しましたが、ストアドプロシージャまたは関数内でこれを使用していないことが明らかになりました。 フロー制御ステートメント 非常に微妙に、ストアドプロシージャ/関数内にある必要があると述べています。

    コードを更新してプロシージャ内に配置し、プロシージャを呼び出して実行します。

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

    また、キャッチオールの ELSEを追加したことにも注意してください。 ブロック;値がわからない場合は、 CASE 「ケースが見つかりません」という警告がスローされます。これは望ましい場合と望ましくない場合があります。




    1. SQLで複雑なクエリを作成する方法

    2. JPA Criteria API:mm / dd/yyyy形式で日付を取得する方法

    3. (mysql jdbcを使用して)ストリーミング結果セットを閉じるには長い時間がかかります

    4. PayPalボタンがリダイレクトする前にAJAX通話を完了する