簡體   English   中英

MySQL中累積列的限制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM