我想知道是否有任何行共享ip。 我通过使用
找到了如何做到这一点SELECT * FROM
people
WHERE ip IN(SELECT ip FROMpeople
GROUP BY ip HAVING COUNT(ip> 1)ORDER BY name
并从此数据库
John 123.456.78.90
鲍勃123.456.78.90
Eric 123.456.78.90
我得到了
John 123.456.78.90
Eric 123.456.78.90
但是在将数据库端口的一些更改添加到ip之后(不要问我为什么)
所以现在数据库看起来像这样:
John 123.456.78.90:1337
鲍勃123.456.78.90:4242
Eric 123.456.78.90:9001
我发现我可以删除结肠后的所有内容
SUBSTRING_INDEX(ip,':',1)
我无法弄清楚如何删除冒号之后的所有内容,然后看看是否有人有相同的IP,以便将这两个查询混合在一起?
答案 0 :(得分:1)
您可以在分组中使用SUBSTRING_INDEX函数,例如:
SELECT * FROM people
WHERE SUBSTRING_INDEX(ip, ':', 1) IN ( SELECT SUBSTRING_INDEX(ip, ':', 1) FROM people GROUP BY SUBSTRING_INDEX(ip, ':', 1) HAVING COUNT(ip > 1 )
ORDER BY name