@eldar_web

Как в SQL проверить в одной таблице у одинаковых полей?

Например, есть таблица Address с полями id, name.
Допустим, есть две строки с одинаковыми name-ми.
Как можно найти их?
  • Вопрос задан
  • 335 просмотров
Пригласить эксперта
Ответы на вопрос 3
0xD34F
@0xD34F
Как-нибудь так, например:

SELECT a.name, a.ids
FROM (
  SELECT name, GROUP_CONCAT(id) AS ids, count(*) AS num
  FROM Address
  GROUP BY name
) AS a
WHERE a.num > 1

Два столбца, в первом - name, которые встречаются более одного раза, во втором - соответствующие им id
Ответ написан
Комментировать
@ynblpb_spb
дятел php
SELECT GROUP_CONCAT(id SEPARATOR ',') FROM Address GROUP BY name

Будут id полей через запятую. Останется разбить строку на запятые и будут ID строк
Ответ написан
Комментировать
DarkRaven
@DarkRaven
разработка программного обеспечения
Вообще, я бы посоветовал воспользоваться функцией определения расстояния Левенштейна ( https://stackoverflow.com/questions/13909885/how-t... ) , если записи могут отличаться, к примеру "МОСКОВСКАЯ" и "УЛ МОСКОВСКАЯ" по факту являются одной и той же улицей, но, в GROUP BY это разные строки. Но. если таких артифактов нет, то просто делайте GROUP BY (lower(name)) и все.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы