选择多个用户使用的IP地址

时间:2014-01-07 15:21:20

标签: sql ms-access-2010

我有一个包含部分用户名和IP地址的表,类似于下面的内容。

  • IP地址|用户名
  • 198.xxx.xxx.101 |用户1
  • 198.xxx.xxx.102 |用户1
  • 209.xxx.xxx.103 |用户2
  • 124.xxx.xxx.104 |用户3
  • 150.xxx.xxx.105 |用户4
  • 150.xxx.xxx.105 |用户5

我正在尝试设计一个查询,该查询将返回已由多个用户使用的IP地址,以及用户名。因此,鉴于上述情况,我想要返回的唯一记录将是最后两个,因为有两个不同的用户使用相同的地址。

我试过

SELECT [IP Address], [User's Name]
FROM tempIPFails
GROUP BY [IP Address], [User's Name]
HAVING COUNT([User's Name]) > 1
ORDER BY [IP Address], [User's Name]

但这根本不会返回任何记录。

有人可以帮助我走上正轨吗?

2 个答案:

答案 0 :(得分:1)

您的查询未返回任何行的原因是您按用户名进行分组。得到你想要的:

SELECT [IP Address]
FROM tempIPFails
GROUP BY [IP Address]
HAVING COUNT(*) > 1
ORDER BY [IP Address];

如果您想要与这些IP地址关联的完整记录,请将其加回原始数据:

select tipf.*
from tempIPFails tipf join
     (SELECT [IP Address]
      FROM tempIPFails
      GROUP BY [IP Address]
      HAVING COUNT(*) > 1
     ) badips
     on tipf.[IP Address] = badips.[IP Address];

答案 1 :(得分:1)

我认为这应该可以解决问题:

SELECT [IP Address], COUNT([User's Name])
FROM tempIPFails
GROUP BY [IP Address]
HAVING  COUNT([User's Name]) > 1
ORDER BY [IP Address]

您需要按ID_ADDRES分组,然后计算有多少名称匹配相同的IP。 你几乎在那里:)