[英]Limit On Accumulated Column in MySQL
我正在嘗試找到一種優雅的方式來編寫查詢,該查詢僅返回足夠的行以使特定列的總和至少為n。
例如,假設n為50,並且表行如下所示:
id count
1 12
2 13
3 5
4 18
5 14
6 21
7 13
然后查詢應返回:
id count
1 12
2 13
3 5
4 18
5 14
因為counts列總計n>50。(准確地說是62)
它必須從最小的id開始連續返回結果。
我對累加器進行了一些研究,例如: MySQL選擇“累加”列
但是AFAIK不能在SUM的SQL查詢限制中使用LIMIT子句來代替行數。
我希望我可以這樣說,但是,這不是有效的SQL:
SELECT *
FROM elements
LIMIT sum(count) > 50
另外,請記住我的目標是以自動,高效的方式將查詢結果原子地插入到另一個表中,因此,不建議使用電子表格或任何與SQL不兼容的內容。
謝謝
有很多方法可以做到這一點。 一種是通過使用Correlated Subquery
SELECT id,
count
FROM (SELECT *,
(SELECT Isnull(Sum(count), 0)
FROM yourtable b
WHERE b.id < a.id) AS Run_tot
FROM yourtable a) ou
WHERE Run_tot < 50
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.