MySQLi - 在一列中找到所有匹配项,可能吗?


MySQLi - find all matches in one column, is it possible?

我需要使用 PHP 将所有匹配项放在一列中。

例:

我的桌子:

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