0

我想知道是否有任何行共享 ip。我发现了如何通过使用来做到这一点

SELECT * FROM peopleWHERE ip IN ( SELECT ip FROM peopleGROUP BY ip HAVING COUNT(ip > 1 ) 按名称排序

并从这个数据库

约翰 123.456.78.90
鲍勃 123.456.78.90
埃里克 123.456.78.90

我有

约翰 123.456.78.90
埃里克 123.456.78.90

但是在数据库端口的一些更改被添加到 ip 之后(不要问我为什么)
所以现在数据库看起来像这样:

约翰 123.456.78.90:1337
鲍勃 123.456.78.90:4242
埃里克 123.456.78.90:9001

我发现我可以通过这样做删除冒号后的所有内容

SUBSTRING_INDEX(ip,':', 1)

我不知道如何删除冒号后的所有内容,然后看看是否有人有相同的 ip
以任何方式将这两个查询混合在一起?

4

1 回答 1

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
于 2013-01-09T18:22:31.983 回答