我试图让我自己每天晚上0:01发送一封电子邮件,当过去24小时内一定数量的重复填写时,我会用cronjob。
到目前为止我所拥有的是:
$query = "SELECT id, detection.number FROM detection INNER JOIN(SELECT number FROM detection GROUP BY number HAVING COUNT(id) >= 2)temp ON detection.number = temp.number WHERE DATE(date_submit) = CURDATE() - INTERVAL 1 DAY ORDER BY number";
我每天都想要一个在过去24小时内填写的重复列表,所以当一个数字填写为重复并且几天前已经填写时,我希望列表中的那个数字和我想要的场景仅在过去24小时内填写的重复项。
知道怎么创建这个吗?
可能还有一个带有重复数量计数器的额外列?
或者我可以只使用mysql查询来实现这个吗?
这里有一些示例数据,希望能够理解我想要实现的目标。
表名=检测
number - date_submit
111 ----- 2016-02-29
222 ----- 2016-02-29
333 ----- 2016-02-29
111 ----- 2016-03-01
333 ----- 2016-03-01
111 ----- 2016-04-02
111 ----- 2016-04-02
444 ----- 2016-04-02
当我在2016-04-03 00:01 am运行cronjob时,我想在整个数据库中搜索昨天填写的数字,例如111和444。
有了这些数字,我想搜索这些数字的重复,并将所有找到的副本放在一封电子邮件中,例如
111 ----- 2016-02-29
111 ----- 2016-03-01
111 ----- 2016-04-02
111 ----- 2016-04-02
亲切的问候,
阿瑞
答案 0 :(得分:1)
Select *
from detection D1
where exists
(Select 1
from detection D2
where date_Submit >=now()-interval 1 day
and D1.Number = D2.Number)
答案 1 :(得分:0)
为什么你不能让他的数字计数> 1。
SELECT
number, COUNT(*)
FROM
detection
WHERE
DATE(date_submit) = CURDATE() - INTERVAL 1 DAY
ORDER BY
number
HAVING COUNT(*) > 1;