Mysql
 sql >> Base de données >  >> RDS >> Mysql

Expression de cas vs déclaration de cas

Le CASE l'expression est évaluée à une valeur, c'est-à-dire qu'elle est utilisée pour évaluer l'un d'un ensemble de résultats, en fonction d'une condition.
Exemple :

SELECT CASE
    WHEN type = 1 THEN 'foo'
    WHEN type = 2 THEN 'bar'
    ELSE 'baz'
END AS name_for_numeric_type
FROM sometable`

Le CASE instruction exécute l'une des instructions d'un ensemble, en fonction d'une condition.
Exemple :

CASE
    WHEN action = 'update' THEN
        UPDATE sometable SET column = value WHERE condition;
    WHEN action = 'create' THEN
        INSERT INTO sometable (column) VALUES (value);
END CASE

Vous voyez à quel point ils sont similaires, mais la déclaration ne le fait pas est évalué à une valeur et peut être utilisé seul, tandis que l'expression doit faire partie d'une expression, par ex. une requête ou un devoir. Vous ne pouvez pas utiliser l'instruction dans une requête, car une requête ne peut pas contenir d'instructions, uniquement des expressions qui doivent être évaluées à quelque chose (la requête elle-même est une instruction, d'une certaine manière), par ex. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE n'a aucun sens.