sql >> Databasteknik >  >> RDS >> Mysql

använd mysql SUM() i en WHERE-sats

Du kan bara använda aggregat för jämförelse i HAVING-satsen:

GROUP BY ...
  HAVING SUM(cash) > 500

HAVING klausul kräver att du definierar en GROUP BY-sats.

För att få den första raden där summan av alla tidigare kontanter är större än ett visst värde, använd:

SELECT y.id, y.cash
  FROM (SELECT t.id,
               t.cash,
               (SELECT SUM(x.cash)
                  FROM TABLE x
                 WHERE x.id <= t.id) AS running_total
         FROM TABLE t
     ORDER BY t.id) y
 WHERE y.running_total > 500
ORDER BY y.id
   LIMIT 1

Eftersom den aggregerade funktionen förekommer i en underfråga, kan kolumnaliaset för den refereras i WHERE-satsen.



  1. Hur man får månaden från ett datum i MySQL

  2. Vad betyder en tidsstämpel i T-Sql i C#?

  3. Chen Notation

  4. Hur man uppdaterar data i en anpassad dialogruta