MySQLi - 在一列中找到所有匹配项,这可能吗?
MySQLi - find all matches in one column, is it possible?
我需要使用 PHP 在一列中获取所有匹配项。
示例:
我的table:
IP adress UserID
192.168.2.1 1
192.168.2.1 2
192.168.2.2 3
192.168.2.1 3
192.168.2.3 4
192.168.2.3 5
192.168.2.4 6
(我总是在用户登录时记录IP地址,所以每个用户id可以有更多的IP地址)
输出我需要的:
IP adress: 192.168.2.1 uses UserID´s: 1, 2, 3
IP adress: 192.168.2.3 uses UserID´s: 4, 5
(仅当同一 IP 地址使用更多用户时)
可能吗?也许将所有行都抓取到 PHP 然后尝试查找匹配项,或者可以由 MySQLi 完成吗?
谢谢
我不知道这是否是最佳答案(可能不是),但这将为您提供您所描述格式的所有 ip,以及不同 ip 上 id 的出现次数。
SELECT `ip` AS ip1, GROUP_CONCAT(`id` SEPARATOR ', ') AS ids,
(SELECT COUNT(`ip`) FROM `table` WHERE `ip` = ip1) AS appearances
FROM `table` GROUP BY ip
我需要使用 PHP 在一列中获取所有匹配项。
示例:
我的table:
IP adress UserID
192.168.2.1 1
192.168.2.1 2
192.168.2.2 3
192.168.2.1 3
192.168.2.3 4
192.168.2.3 5
192.168.2.4 6
(我总是在用户登录时记录IP地址,所以每个用户id可以有更多的IP地址)
输出我需要的:
IP adress: 192.168.2.1 uses UserID´s: 1, 2, 3
IP adress: 192.168.2.3 uses UserID´s: 4, 5
(仅当同一 IP 地址使用更多用户时)
可能吗?也许将所有行都抓取到 PHP 然后尝试查找匹配项,或者可以由 MySQLi 完成吗? 谢谢
我不知道这是否是最佳答案(可能不是),但这将为您提供您所描述格式的所有 ip,以及不同 ip 上 id 的出现次数。
SELECT `ip` AS ip1, GROUP_CONCAT(`id` SEPARATOR ', ') AS ids,
(SELECT COUNT(`ip`) FROM `table` WHERE `ip` = ip1) AS appearances
FROM `table` GROUP BY ip