MySQL 提供 SUM() 聚合函數來計算列中值的總和。雖然 SUM() 通常在 SELECT 查詢中用於取得聚合結果,但它也可以在具有一定限制的 WHERE 子句中使用。
在給定場景中,目標是檢索表中的第一行,其中前幾行的現金值總和超過指定閾值。在 WHERE 子句中使用「WHERE SUM(cash) > 500」不會產生所需的結果,因為在此上下文中無法直接比較聚合。
要實現所需的功能,應在中使用 HAVING 子句與 GROUP BY 子句結合使用。但是,HAVING 子句需要 GROUP BY 子句定義。因此,在這種情況下,分組沒有意義。
解決方案是在 WHERE 子句中使用巢狀子查詢。這種方法允許我們計算每行的現金值的運行總計,然後在比較中使用該值。以下查詢完成此操作:
<code class="sql">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;</code>
透過在 WHERE 子句中引用列別名“running_total”,我們可以將運行總計與指定閾值進行比較。 LIMIT 子句確保僅傳回符合條件的第一行。
以上是如何在 MySQL 中檢索值總和超過閾值的第一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!