2017-03-17 61 views
0

好吧,很难制作标题,我希望我能说清楚。MySQL计算用户在执行操作前有多少任务

我有如下表:

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推WHERE push_when < = NOW()

这让我总提醒我要推的。

问题是,单个用户可以同时有几个提醒,甚至可以有几十个提醒。我不想将数十条消息推送到用户设备(或多个设备),如果用户同时有多个提醒,我只想发送一条推送消息,如下所示:“您有12个任务需要处理“或类似的东西,而不是标准的提醒任务。

我知道明显的是对每个提醒进行另一个查询,以获得该用户ID的提醒数量,但正如我所说的,这件事情每分钟运行一次。有没有这样做没有几个疑问?表格结构尚未投入生产,我仍然可以进行更改。

回答

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; 
+0

不错,简单,谢谢! –