Mysql
 sql >> Database >  >> RDS >> Mysql

Espressione del caso vs Dichiarazione del caso

Il CASE l'espressione restituisce un valore, ovvero viene utilizzata per valutare uno di un insieme di risultati, in base a una condizione.
Esempio:

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

Il CASE istruzione esegue una di una serie di istruzioni, in base a una condizione.
Esempio:

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

Vedi come sono simili, ma l'affermazione non restituisce un valore e può essere utilizzata da sola, mentre l'espressione deve far parte di un'espressione, ad es. una domanda o un compito. Non è possibile utilizzare l'istruzione in una query, poiché una query non può contenere istruzioni, solo espressioni che devono restituire qualcosa (la query stessa è un'istruzione, in un certo senso), ad es. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE non ha senso.