0

所以我有一个名为 users 的表的数据库.. 在该表中有一个名为 IP 的列,我想找到具有相同 IP 的用户并禁止他们.. 那么如何搜索 IP 的数据库是相同的呢?

4

3 回答 3

2

您应该通过查询来利用组。我写的一个旧博客是Understanding group bys

但基本上这应该有效:

select distinct ip, count(id) from users group by IP having count(id) > 1

这将返回计数大于 1 的所有 IP 地址

于 2012-09-16T02:03:24.373 回答
0

运行 SQL 语句并替换您要搜索的 IP 地址:

SELECT * FROM users WHERE IP = '172.0.0.1'
于 2012-09-16T01:54:51.330 回答
0

您可以通过以下方式开始:

SELECT count(id) FROM tablename
GROUP BY IP

然后,您只需将这些结果加入表中即可获取有关重复项的信息

所以修改第一条语句:SELECT count(id) as number, IP FROM tablename

然后

   SELECT a.id, a.name FROM tablename a
   JOIN (
        SELECT count(id) as number, IP FROM tablename
    ) b ON a.IP = b.IP
    WHERE number > 1

这应该会为您提供数据库中所有重复的 IP 地址。您可能必须想出一种方法来决定保留哪个帐户以及删除哪个帐户,但这应该会给您一个开始。

于 2012-09-16T02:01:49.173 回答