Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询以检查X分钟内重复消息的数量?_Mysql_Sql_Select_Aggregate Functions - Fatal编程技术网

Mysql SQL查询以检查X分钟内重复消息的数量?

Mysql SQL查询以检查X分钟内重复消息的数量?,mysql,sql,select,aggregate-functions,Mysql,Sql,Select,Aggregate Functions,如果在过去15分钟内,相同内容的字段cmd发送了3次以上,是否有查询可以匹配 我目前有: SELECT COUNT(*) FROM `log` WHERE gid = @gid AND ts_register BETWEEN DATE_SUB(NOW() , INTERVAL 15 MINUTE) AND NOW() 这将收集全球id在过去15分钟内发送的所有消息 如果gid在过去15分钟内重复发送cmd超过3次,是否有办法考虑并列出字段cmd 例如: gid 1 cmd testing

如果在过去15分钟内,相同内容的字段cmd发送了3次以上,是否有查询可以匹配

我目前有:

SELECT COUNT(*) 
FROM `log` 
WHERE gid = @gid 
AND ts_register BETWEEN DATE_SUB(NOW() , INTERVAL 15 MINUTE) AND NOW()
这将收集全球id在过去15分钟内发送的所有消息

如果gid在过去15分钟内重复发送cmd超过3次,是否有办法考虑并列出字段cmd

例如:

gid 1 cmd testing repeatable cmd
gid 1 cmd testing repeatable cmd
gid 1 cmd testing repeatable cmd
gid 1 cmd different cmd
所以它会给我3的计数。

你想这样做:

SELECT cmd, COUNT(*) Qty
FROM `log` 
WHERE gid = @gid 
AND ts_register BETWEEN DATE_SUB(NOW() , INTERVAL 15 MINUTE) AND NOW()
GROUP BY cmd
根据您的数据,这将返回:

Cmd Qty --- --- gid 1 cmd testing repeatable cmd 3 gid 1 cmd different cmd 1 您要执行以下操作:

SELECT cmd, COUNT(*) Qty
FROM `log` 
WHERE gid = @gid 
AND ts_register BETWEEN DATE_SUB(NOW() , INTERVAL 15 MINUTE) AND NOW()
GROUP BY cmd
根据您的数据,这将返回:

Cmd Qty --- --- gid 1 cmd testing repeatable cmd 3 gid 1 cmd different cmd 1
将此添加到Adrian的查询中,以获取您的3个以上条件

HAVING COUNT(*) > 3

将此添加到Adrian的查询中,以获取您的3个以上条件

HAVING COUNT(*) > 3


你不能在你的查询中添加
cmd
列,例如
SELECT COUNT(*)、cmd FROM等
Neil Knight,我想在查询中匹配cmd字段,只返回COUNT作为答案,因为@Adrian已经击败了我。@Neil Knight是的,我不知道组员会这样工作,这太好了。你能不能在你的查询中添加
cmd
列,例如
SELECT COUNT(*),cmd FROM等
Neil Knight,我想在查询中匹配cmd字段,只返回COUNT,我本应该把它作为答案的,因为@Adrian已经击败了我。@Neil Knight是的,我不知道GROUP BY会以这种方式工作,那太好了。该死,那很容易。呵呵,我不知道我可以像那样使用group by。使用
HAVING
我得到的是全部消息,而不是count
group by cmd
这是个问题吗?如果是这样,我无法理解。你介意重新措辞吗?例如,如果我使用just group by而不使用Have,它将显示上述结果,使用Have it将显示给定gid的总计数。该死,这很简单,呵呵,我不知道我可以像那样使用group by。使用
have
我得到的是全部消息,而不是只得到count
group by cmd
这是个问题吗?如果是这样,我无法理解。您介意重新措辞吗?例如,如果我只使用group by而不使用having,它将显示上述结果,使用having它将显示给定gid的总计数。@GidonWise nice thx。使用此选项时,它不会考虑它似乎拥有的
groupby
和groupby是好友。have就像一个WHERE,但它与GROUP BY的输出有关。WHERE发生在GROUP BY触及查询之前。@GidonWise我现在有点困惑,所以基本上我要么使用WHERE,要么使用HAVING,要么使用HAVING,要么应该与WHERE一起使用?您可以同时使用这两个。这里有一个例子。选择count(*)作为库存中的零件,其中type='cars'按零件大于3的车型分组;所以你可以看到,在我们分组之前,我们把它限制在汽车上。然后我们在定义部件时,在分组后使用部件来消除结果。@GidonWise嗯,对我来说,它似乎不是这样工作的,想象一个有多条消息的聊天,然后我按用户id按消息文本分组来过滤消息,这将给我用户发送的重复消息的总数,如果我使用Have,它不会给出15分钟内重复超过3次的所有消息,而是他在15分钟内发送的消息总数。@GidonWise nice thing thx。使用此选项时,它不会考虑它似乎拥有的
groupby
和groupby是好友。have就像一个WHERE,但它与GROUP BY的输出有关。WHERE发生在GROUP BY触及查询之前。@GidonWise我现在有点困惑,所以基本上我要么使用WHERE,要么使用HAVING,要么使用HAVING,要么应该与WHERE一起使用?您可以同时使用这两个。这里有一个例子。选择count(*)作为库存中的零件,其中type='cars'按零件大于3的车型分组;所以你可以看到,在我们分组之前,我们把它限制在汽车上。然后我们在定义部件时,在分组后使用部件来消除结果。@GidonWise嗯,对我来说,它似乎不是这样工作的,想象一个有多条消息的聊天,然后我按用户id按消息文本分组来过滤消息,这将给我用户发送的重复消息的总数,如果我使用Have,它不会给出15分钟内重复超过3次的所有消息,而是他在15分钟内发送的消息总数。