在WHERE 子句中使用MySQL SUM() 函數進行行查詢
MySQL 允許使用者在子內執行聚合計算並將其用作條件用於WHERE 子句中的行選擇。但是,了解在這種情況下使用聚合函數的限制非常重要。
考慮以下場景:您有一個包含 id 和 cash 列的表,並且您想要檢索總和的第一行之前的所有現金價值都超過特定門檻。
範例表:
id | cash |
---|---|
1 | 200 |
2 | 301 |
3 | 101 |
4 | 700 |
預期結果:
對於輸入閾值為500,預期結果為第3行,因為第1 行和第2 行的現金值總和(200 301 = 501) 超過門檻。
錯誤方法:
嘗試使用 WHERE SUM(cash) >
解決方案:
要克服此限制,您可以在中使用 HAVING 子句與子查詢結合使用,計算每行的現金運行總額。
<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>
說明:
此方法可確保準確識別所有先前現金值總和超過閾值的第一行.
以上是如何使用 MySQL 的 SUM() 函數根據先前值的總和檢索行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!