在MySQL数据库中找到两个相似的

时间:2013-01-09 18:10:22

标签: mysql count substring

我想知道是否有任何行共享ip。 我通过使用

找到了如何做到这一点
  

SELECT * FROM people WHERE ip IN(SELECT ip FROM people 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,以便将这两个查询混合在一起?

1 个答案:

答案 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