【发布时间】:2012-02-08 20:19:09
【问题描述】:
我有带有表用户的 mysql 数据库。在用户中有列:id , username , password , ip
我有管理面板,我需要显示具有相同 ip 的用户,像这样
用户1 → 用户2
尼克1 → 尼克2
等等
我如何使用 php.Thanks 来实现,这很紧急。谢谢。
【问题讨论】:
-
最近,几乎一样的问题stackoverflow.com/q/9197999/1164491
我有带有表用户的 mysql 数据库。在用户中有列:id , username , password , ip
我有管理面板,我需要显示具有相同 ip 的用户,像这样
用户1 → 用户2
尼克1 → 尼克2
等等
我如何使用 php.Thanks 来实现,这很紧急。谢谢。
【问题讨论】:
这是你的 sql 查询。
SELECT username, list.ip FROM users
INNER JOIN (SELECT ip FROM users
GROUP BY ip HAVING count(id) > 1) dup ON list.ip = dup.ip
在 PHP 中使用:
$sql = "SELECT username, list.ip FROM users
INNER JOIN (SELECT ip FROM users
GROUP BY ip HAVING count(id) > 1) dup ON list.ip = dup.ip";
$result = mysql_query($sql,$con);
while($row = mysql_fetch_array($result))
{
echo $row['username'];
}
更新:
试试这个查询:
$sql = "SELECT username FROM users WHERE ip in
(SELECT username FROM users GROUP BY ip HAVING count(ip) > 1)";
【讨论】:
select ... group by ... having ... 也可以完成这项工作,而无需连接开销。
像这样获取您的重复 IP 列表,
SELECT COUNT(*) as acount, ip FROM users GROUP BY ip HAVING acount > 1
然后使用这些结果,获取与这些 IP 匹配的所有帐户
【讨论】:
select users
from users_table
where ip ='thisIp'
【讨论】: