найти два одинаковых в базе данных MySQL

Я хочу узнать, имеют ли какие-либо строки 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
Bob 123.456.78.90
Eric 123.456.78.90

я получил

Джон 123.456.78.90
  Эрик 123.456.78.90

But after some changes in the database ports were added to the ip's (dont ask me why)
so now the database looks like this:

John 123.456.78.90:1337
Bob 123.456.78.90:4242
Eric 123.456.78.90:9001

Я узнал, что могу удалять все после двоеточия, делая это

SUBSTRING_INDEX (ip, ':', 1)

I cant figure out how to delete everything after the colon and then see if anyone has the same ip
any way to mix these two queries together?

0
nl ja de

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
1
добавлено
все три строки в вашей новой базе данных имеют один и тот же IP-адрес. Не должен ли запрос выводить все 3?
добавлено автор wless1, источник
если я использую это, он выведет все 3: /
добавлено автор user1964248, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw