Detekcja dubli

0

Witam,
Zastanawiam się jak rozwiązać następujący problem:
Mam tabelę, w której występuje około 30 000 rekordów, każdy ma swój unikalny ID, ale na jednym atrybucie (niech się roboczo nazywa: klient) zdarzają się duble.
Przykładowo:
555555 - Wodociagi Miejskie
657895 - Wodociagi Miejskie

Chciałbym puścić taką kwerendę po tabeli, która zwróciłaby tylko zdublowane rekordy. Pomożecie?

0
Kain napisał(a)

Witam,
Zastanawiam się jak rozwiązać następujący problem:
Mam tabelę, w której występuje około 30 000 rekordów, każdy ma swój unikalny ID, ale na jednym atrybucie (niech się roboczo nazywa: klient) zdarzają się duble.
Przykładowo:
555555 - Wodociagi Miejskie
657895 - Wodociagi Miejskie

Chciałbym puścić taką kwerendę po tabeli, która zwróciłaby tylko zdublowane rekordy. Pomożecie?

select pole_z_nazwą_obiektu, count()
from nazwa_tabeli
where ....(ewentualnie dodatkowe warunki)
group by pole_z_nazwą_obiektu
having count(
)>1

0

Dzięki serdeczne!

A gdybym chciał dodatkowo wylistować te numery, pod którymi te duble się znajdują, to co mi doradzicie?

Dzięki za cierpliwość :)

0
select t1.id, t1.nazwa
from tabela as t1 inner join tabela as t2 on t1.nazwa = t2.nazwa
where t1.id > t2.id
0
Shalom napisał(a)

select t1.id, t1.nazwa
from tabela as t1 inner join tabela as t2 on t1.nazwa = t2.nazwa
where t1.id > t2.id


Tu będzie raczej select distinct bo jak przykładowo dla powtarzającej się trzy razy nazwy o indeksach 1,2,3 jest 3>2, 3>1 to wypisze trójkę dwa razy.
0

No tak, bo ja myślałem że on chce zobaczyć te zazębiające się pary. A skoro on chce tylko wypisać to sobie to ten where jest zbędny, wystarczy distinct.

0

"where" nie jest zbędny, bo bez niego błędnie wypisze wszystkie rekordy bez powtórzeń, czyli te pojedyncze gdzie table1.pole=table2.pole i w dodatku ich będzie kilkadziesiąt tysięcy w tym zapytaniu. Koncepcja była poprawna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1