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