sql >> Database >  >> RDS >> Mysql

Case-statement in MySQL

Ja, zoiets als dit:

SELECT
    id,
    action_heading,
    CASE
        WHEN action_type = 'Income' THEN action_amount
        ELSE NULL
    END AS income_amt,
    CASE
        WHEN action_type = 'Expense' THEN action_amount
        ELSE NULL
    END AS expense_amt

FROM tbl_transaction;

Zoals andere antwoorden hebben aangegeven, heeft MySQL ook de IF() functie om dit te doen met een minder uitgebreide syntaxis. Ik probeer dit over het algemeen te vermijden omdat het een MySQL-specifieke extensie voor SQL is die over het algemeen niet elders wordt ondersteund. CASE is standaard SQL en is veel draagbaarder over verschillende database-engines, en ik geef er de voorkeur aan om zoveel mogelijk draagbare query's te schrijven, waarbij ik alleen engine-specifieke extensies gebruik wanneer het draagbare alternatief aanzienlijk is langzamer of minder handig.



  1. Hoe importeer ik een SQL Server .bak-bestand in MySQL?

  2. Wat is het verschil tussen MS Access en SQL?

  3. Selectquery met offsetlimiet is te traag

  4. Hoe twee arrays te vergelijken en alleen de niet-overeenkomende elementen te kiezen In postgres