• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Usunięcie duplikatów w pl/sql

Object Storage Arubacloud
+2 głosów
392 wizyt
pytanie zadane 19 listopada 2021 w SQL, bazy danych przez Grzegorzko Obywatel (1,110 p.)

Czy ma ktoś pomysł w jaki sposób można usunąć te zduplikowane wartości. Chodzi mi o to by nie usuwać wszystkich duplikatów tylko żeby został tylko 1?

2
komentarz 19 listopada 2021 przez VBService Ekspert (254,490 p.)
1
komentarz 19 listopada 2021 przez Wiciorny Ekspert (272,110 p.)

najprościej myśle że u kolegi będzie właśnie użycie usuwania bez tworzenia Unique i modyfikacji struktury 

DELETE u1 FROM user u1, user u2 
WHERE u1.id < u2.id AND u1.name = u2.name

 

Twoje rekordy rózni ID- bo jest unikalne, więc możesz w ten sposób usunąc, tam gdzie pewne wartości się powielają, nie tyle imie, ale też zakres "w klauzuli WHERE" możesz dostosować do swoich kolumn budując dodatkowe wymagania warunki

komentarz 20 listopada 2021 przez Grzegorzko Obywatel (1,110 p.)
Ogólnie to wykminiłem coś takiego i działa;

DELETE FROM pracownicy WHERE rowid IN
(
SELECT rowid FROM pracownicy WHERE rowid  IN(
SELECT rowid FROM pracownicy WHERE (imie, nazwisko) IN ( SELECT imie, nazwisko FROM pracownicy HAVING COUNT(1)>1 GROUP BY imie, nazwisko))
AND rowid NOT IN (
SELECT DISTINCT  FIRST_VALUE(rowid)  OVER (PARTITION BY imie, nazwisko)  FROM pracownicy WHERE (imie, nazwisko) IN (SELECT imie, nazwisko FROM pracownicy HAVING COUNT(1)>1 GROUP BY imie, nazwisko))
);
1
komentarz 20 listopada 2021 przez Wiciorny Ekspert (272,110 p.)
strasznie zagmatwałeś, tobie potrzebne są tylko relacje "wiążące w podzapytaniu" nie jest potrzebne grupowanie, ani zliczanie wystąpień.
komentarz 20 listopada 2021 przez Grzegorzko Obywatel (1,110 p.)
To pokazalbyś jak według Ciebie powinni to wyglądać?
2
komentarz 23 listopada 2021 przez PreZmyK Pasjonat (21,470 p.)
SELECT * FROM pracownicy
WHERE 1 <> (SELECT COUNT(1)
            FROM pracownicy a
            WHERE a.id>=id
            AND a.nazwisko=nazwisko
            AND a.imie=imie
            )         
;

Najłatwiej jest usunąć z row_number() > 1.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 346 wizyt
pytanie zadane 30 grudnia 2021 w SQL, bazy danych przez Grzegorzko Obywatel (1,110 p.)
0 głosów
1 odpowiedź 337 wizyt
pytanie zadane 18 października 2021 w SQL, bazy danych przez Grzegorzko Obywatel (1,110 p.)
0 głosów
2 odpowiedzi 545 wizyt
pytanie zadane 8 października 2021 w SQL, bazy danych przez Grzegorzko Obywatel (1,110 p.)

92,674 zapytań

141,574 odpowiedzi

320,045 komentarzy

62,038 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...