Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie mysql SUM() in einer WHERE-Klausel

Sie können Aggregate nur in der HAVING-Klausel zum Vergleich verwenden:

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

Das HAVING -Klausel erfordert, dass Sie eine GROUP BY-Klausel definieren.

Um die erste Zeile zu erhalten, in der die Summe aller vorherigen Barmittel größer als ein bestimmter Wert ist, verwenden Sie:

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

Da die Aggregatfunktion in einer Unterabfrage vorkommt, kann der Spaltenalias dafür in der WHERE-Klausel referenziert werden.