我有一个问题,我需要在网站上阻止机器人,并需要一个帐户列表来阻止
回答的问题是这个。 同一帐户同时使用不同的IP地址。 我需要一个简单的帐号表,我可以快速复制并粘贴到我的安全
中如果帐号在同一时间在不同的IP地址下出现2次或更多次,请显示帐号。
以下是我正在使用的表的示例。
Table temp1 account ip last_used 14K4cHc 79.110.19.199 2016-01-07 09:06:52 17FFhQY 79.110.19.199 2016-01-07 09:06:52 14K4cHc 91.215.136.75 2016-01-07 09:06:52 17FFhQY 91.215.136.75 2016-01-07 09:06:52 15LESsr 193.9.158.98 2016-01-07 09:06:51
第1行到第4行是使用2个不同IP地址同时发送垃圾网站的相同2个帐户的示例,并且是可能的机器人。
答案 0 :(得分:1)
作为起点,为同一帐户和last_used时间识别不同的IP地址,我们可以使用如下查询:
SELECT t.account
, t.last_used
, COUNT(DISTINCT t.ip) AS cnt_ip
FROM temp1 t
GROUP BY t.account, t.last_used
HAVING COUNT(DISTINCT t.ip) > 1
ORDER BY t.account, t.last_used
这可能是您实际想要返回的更多行,因为它还会返回last_used
的不同值。
GROUP BY
折叠指定表达式具有相同值的所有行。在这种情况下,account
和last_used
。
COUNT(DISTINCT )
获取每个折叠组的唯一IP地址数。如果给定account
和last_used
值的所有IP地址都是非NULL且相等,则返回值1.我们包含一个HAVING
子句来过滤掉那些行只有相同的IP地址。
此查询只是一个起点。它可以用作内联视图,也可以增强。