【问题标题】:find two alike in MySQL database在 MySQL 数据库中找到两个相似的
【发布时间】:2012-12-24 00:02:45
【问题描述】:

我想知道是否有任何行共享 ip。 我发现了如何使用

SELECT * FROM people WHERE ip IN (SELECT ip FROM people GROUP 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
有什么方法可以将这两个查询混合在一起吗?

【问题讨论】:

    标签: mysql count substring


    【解决方案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
    

    【讨论】:

    • 如果我使用它,它将输出所有 3 个:/
    • 新数据库中的所有三行都具有相同的 IP。查询不应该输出全部 3 个吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多