簡體   English   中英

Mysql選擇前n行whilte count x <y

[英]Mysql select top n rows whilte count x<y

我有一個名為itemCount的列的表,我想選擇前n行,而SUM(itemCount)小於y

+----+-----------+
| id | itemCount |
+----+-----------+
|  1 |         5 |
|  2 |        10 |
|  3 |         1 |
|  4 |        20 |
+----+-----------+

假設y=15所以在這種情況下我想要前2行,其中SUM(itemCount)<=15我需要這樣的東西:

SELECT * FROM `tbl_mail_queue` LIMIT 0,(select count(id) from `tbl_mail_queue` m where SUM(m.`count`)<=15)

這可能嗎?

更新:

我正在創建一個電子郵件隊列系統,我的系統發送的每封電子郵件都存儲在此表中。每封電子郵件可以有多個收件人,我不想將每個電子郵件行分成一個收件人(其中一個模塊發送電子郵件是時事通訊,每封郵件可以有幾十個甚至幾百個收件人,我只將它們分成50個收件人堆棧)所以在我的電子郵件表中我有一個列告訴我電子郵件有多少收件人。

所以每行的計數列可以有1到50的值,現在我想每隔幾分鍾發送50封電子郵件,這里是我需要這個查詢來選擇前50個電子郵件的地方,它可以包含在1個或更多(n)行中。

是的:

SELECT 
   test.id,
   test.itemCount 
FROM 
   test 
     LEFT JOIN 
       (SELECT 
         id, 
         @sum:=@sum+itemCount AS current_sum 
        FROM 
          test 
          CROSS JOIN(SELECT @sum:=0) AS init) AS sums 
     ON test.id=sums.id 
WHERE sums.current_sum<=15;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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