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

Sagsudtryk vs sagsudsagn

CASE udtryk evalueres til en værdi, dvs. det bruges til at evaluere til et af et sæt resultater, baseret på en eller anden betingelse.
Eksempel:

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

CASE sætning udfører en af ​​et sæt sætninger, baseret på en eller anden betingelse.
Eksempel:

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

Du kan se, hvordan de ligner hinanden, men udsagnet ikke evaluere til en værdi og kan bruges alene, mens udtrykket skal være en del af et udtryk, f.eks. en forespørgsel eller en opgave. Du kan ikke bruge sætningen i en forespørgsel, da en forespørgsel ikke kan indeholde udsagn, kun udtryk, der skal evalueres til noget (selve forespørgslen er på en måde et udsagn), f.eks. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE giver ingen mening.




  1. Docker mysql kan ikke oprette forbindelse til container

  2. SQLite JSON()

  3. MySQL join-tabeller, hvor tabelnavnet er et felt i en anden tabel

  4. Er der forskel på disse to forespørgsler?