|
|
|
Supreme Being
      
участник
Last Login: 04.08.2008 12:56
Сообщ.: 118,
Visits: 1 576
|
|
Как найти записи в которых значения некоторых полей одинаково?
Например поля с ФИО.
|
|
|
|
|
новичок
      
участник
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, этим ключем будет одно поле - "ФИО".
По хорошемя, проблему нужно решать в корне - создавая уникальный индекс, - но из-за упомянутых "условий возникновения" это не всегда возможно. А "невозможно", как всегда, проистекает от ошибок проектирования.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 04.08.2008 12:56
Сообщ.: 118,
Visits: 1 576
|
|
| А что такое <условия возникновения>?
|
|
|
|