好的,标题很难,我希望我能说清楚。
我有下表:
push_id int(11)
push_usr_id int(11)
push_account varchar(30)
pust_title varchar(128)
pust_contents varchar(254)
push_when datetime
这些是通过移动推送发送的任务提醒。 我有一个每分钟运行的cron:
SELECT * FROM push WHERE push_when< = NOW()
这给了我提醒的总数。
问题是单个用户可以同时拥有多个提醒,甚至可以有几十个提醒。我不想将数十条消息推送到用户设备(或设备),如果用户同时有多个提醒,我只想发送一条推送消息,说:“你有12个任务要做“或类似的东西,而不是任务的标准提醒。
我知道显而易见的是对每个提醒进行另一次查询以获取该用户ID的提醒数量,但正如我所说,这件事每分钟运行一次。有没有办法在没有多次查询的情况下执行此操作?表结构尚未生产,我仍然可以进行更改。
答案 0 :(得分:1)
我相信这里的答案是使用GROUP BY。在这种情况下,您需要按push_usr_id进行分组。如下所示:
select push_usr_id, count(*) as Push_Num
from yourtable
where push_when <= now()
group by push_usr_id;