SQL-запрос на поиск одинаковых значений полей в одной таблице?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



SQL-запрос на поиск одинаковых значений полей... Expand / Collapse
Автор
Сообщение
06.07.2005 16:40
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.08.2008 12:56
Сообщ.: 118, Visits: 1 576
Как найти записи в которых значения некоторых полей одинаково?
Например поля с ФИО.
Сообщ. #874599
15.07.2005 2:52
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 15.07.2005 3:50
Сообщ.: 5, Visits: 56
Такая задача возникает постоянно при ошибке "двойная строка". Почему ошибка возникает - другой вопрос.
Решение:
select key_field1, field2
from table
where <условия возникновения>
group by key_field1, field2 having count(*)>1

Так получаются комбинации ключей и кодов, встречающиеся более одного раза.
Далее, возникает необходимость увидеть не только ключи, но и строки целиком. Делаем это так:
select * from table
where <условия возникновения>
and (key_field1, field2) in (
select key_field1, field2
from table
where <условия возникновения>
group by key_field1, field2 having count(*)>1
)
order by key_field1, field2

Обратить внимание: ключевые поля должны точно повторяться, по порядку и количеству.
Для примера Train, этим ключем будет одно поле - "ФИО".

По хорошемя, проблему нужно решать в корне - создавая уникальный индекс, - но из-за упомянутых "условий возникновения" это не всегда возможно. А "невозможно", как всегда, проистекает от ошибок проектирования.
Сообщ. #875596
20.07.2005 9:45
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.08.2008 12:56
Сообщ.: 118, Visits: 1 576
А что такое <условия возникновения>?
Сообщ. #876001
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 12:00