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

Příkaz CASE v klauzuli WHERE SQL

Z vašeho komentáře .

Můžete použít CASE příkaz v WHERE takhle:

SELECT count(enq_id) AS total, sum(purchase_amount) AS purchase
FROM temp_stock
WHERE purchase_date <> '0000-00-00'
AND purchase_date < '2012-08-01'
AND (    STATUS = 'Sold'
      OR STATUS = 'In Stock'
      OR STATUS = 'Ref')
AND CASE STATUS 
         WHEN 'Sold' 
         THEN delivery_date >= '2012-08-01'
         ELSE 1=1
    END

Zde musíte použít ELSE 1=1 . jinak nedosáhnete požadovaného výsledku. Další vysvětlení viz tento SQLFiddle



  1. Místnost pro Android – Jak vymazat sqlite_sequence pro všechny tabulky

  2. Dynamický SQL pro generování názvů sloupců?

  3. Dotaz na názvy sloupců z tabulky od jiného uživatele

  4. Jak importovat data CSV do databáze MYSQL pomocí PHP CodeIgniter?