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

Příkaz případu v MySQL

Ano, něco takového:

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;

Jak poukázaly další odpovědi, MySQL má také IF() pomocí méně podrobné syntaxe. Obecně se tomu snažím vyhnout, protože jde o rozšíření SQL specifické pro MySQL, které není obecně podporováno jinde. CASE je standardní SQL a je mnohem lépe přenosný mezi různými databázovými stroji a dávám přednost psaní přenosných dotazů, pokud je to možné, pouze pomocí rozšíření specifických pro stroj, když je přenosná alternativa značně pomalejší nebo méně pohodlné.



  1. EF a TransactionScope pro SQL Server i Oracle bez eskalace/překlenutí na DTC?

  2. Kroky, které je třeba podniknout, pokud dojde k výpadku MySQL

  3. Rozdělit sloupec do více řádků v Postgresu

  4. Co je ekvivalentem tabulky Oracle Dual v MS SqlServer?