【发布时间】:2011-10-29 04:06:54
【问题描述】:
我需要一个 sql 查询来从我的消息队列中选择行,直到 SUM(users_count) 最多达到 1000。但是如果只返回一行并且该行的 users_count 为大于 1000。
我需要类似的东西:(我添加了自己的关键字)
SELECT * FROM `messages_queue` UNTIL SUM(users_count) < 1000 AT LEAST 1 ROW
这是我的表结构:
messages_queue
- msg_id
- msg_body
- users_count(消息接收者的数量)
- 时间(插入时间)
【问题讨论】:
-
users_count列代表什么? -
如果要选择行,如何在一行中有一个值的SUM。请更具体。
-
您想要的顺序是什么?即在确定您的运行总和中首先包含哪些记录时优先考虑哪些记录?
-
users_count表示我必须将此消息发送给的用户数。这里唯一重要的是我想控制流量,如果其中一个有 2,000,000 个接收器(users_count),则并行发送消息,这将是一个很长的队列,所以最好并行发送消息。 -
我有一个
time列,并且必须在此列上进行排序。 (先进先出)