MySQL计算用户在执行

时间:2017-03-17 21:42:08

标签: php 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 push WHERE push_when< = NOW()

这给了我提醒的总数。

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

我知道显而易见的是对每个提醒进行另一次查询以获取该用户ID的提醒数量,但正如我所说,这件事每分钟运行一次。有没有办法在没有多次查询的情况下执行此操作?表结构尚未生产,我仍然可以进行更改。

1 个答案:

答案 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;