sql >> Databáze >  >> RDS >> Mysql

Case Expression vs Case Statement

CASE výraz se vyhodnotí na hodnotu, tj. použije se k vyhodnocení jednoho ze sady výsledků na základě nějaké podmínky.
Příklad:

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

CASE příkaz provede jeden ze sady příkazů na základě nějaké podmínky.
Příklad:

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

Vidíte, jak jsou si podobné, ale tvrzení není vyhodnotit na hodnotu a lze jej použít samostatně, přičemž výraz musí být součástí výrazu, např. dotaz nebo úkol. Příkaz nemůžete použít v dotazu, protože dotaz nemůže obsahovat příkazy, pouze výrazy, které je třeba k něčemu vyhodnotit (dotaz sám o sobě je svým způsobem příkazem), např. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE nedává smysl.




  1. sql use příkaz s proměnnou

  2. Živé migrace pomocí replikace MySQL

  3. Velikost schématu MySQL

  4. POUŽÍVEJTE HINT a DISABLE_OPTIMIZED_NESTED_LOOP