Jak usunąć powtarzające się wpisy w oracle
Powtarzające się linie w Oracle można zróżnicować tylko za pomocą ich "ROWID" (adres linii).
Kroki
jeden. Usuń ciąg za pomocą ROWID. Jest to najłatwiejszy sposób na usunięcie rekordu.
SQL> Wybierz Rowid, Nazwa z nazwisk-RowidName ------------------------------------------- -------- Aabjnsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac carrieaabjnsaAmaadfoaad tom4 rzędy.SQL> Usuń z nazw, gdzie ROWID = `AabjnsaagaAdfoaaa`-1 rzędu usunięte.SQL> Commit-Complete.SQL> Wybierz Rowid, Nazwa odmian-RowidName --------------------------------------- AabjnsaaagaaaaaaaaAc CarrieaabjnsaaAdFoaad Wybrano wiersze Tom3.
2. Usuń wszystkie powtarzalne linie z wyjątkiem jednego.
SQL> Wybierz nazwę z nazwiska nazwiska ------------------------------- Alancietomal4 rzędy wybrane.SQL> Usuń z nazwisk, w których znalazły się nazwa = "rzędy alan`-2 usunięte.SQL> Commit-Complete.SQL> Włóż do wartości nazw ("Alan") - 1 wiersz utworzony.SQL> Commit-Complete.SQL> Wybierz * z nazwiska nazwiska ------------------------------ AlanCarietomRows wybrane.
3. Użyj funkcji MAX lub MIN, aby uzupełnić i usunąć wszystkie inne linie. W takim przypadku, jeśli jest kilka duplikatów, zostaną usunięte.
SQL> Wybierz Rowid, Nazwa z nazwisk-RowidName ------------------------------------------- --------- Aabjnsaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac carrieaabjansaAAAAAdFoaad tomaabjnsaAagaadfoaaf alan5 rzędy wybrane.SQL> Usuń z nazwisk A2where Rowid> (Wybierz Min (Rowid) z nazwisk B3where B.Nazwa = A.Nazwa4) -2 rzędy usunięte.SQL> Wybierz Rowid, Nazwa z nazwisk-RowidName ------------------------------------------- -------- AabjnsaagaAdFoaaaaaaac Carrieaabjnsaac CarrieaabjnsaAagaAdFoaad Tom3 Rzędy.SQL> Commit-Complete.}}
[[Zdjęcie: Usuń duplikaty rekordy w Oracle Krok 4.Jpg | centrum | 550px]] {{CodeBox | lang ="Oracle8"> SQL> Wybierz * z nazwisk ----------------------------------------- alan50carrie51tom52alan504 Wybrane wiersze.SQL> Usuń z nazwisk A2where Rowid> (Wybierz Min (Rowid) z nazwisk B3where B.Nazwa = A.Nazwa4and B.Wiek = A.Age5) -1 rzędu usunięte.SQL> Wybierz * z nazwisk-nameage ------------------------------ ---------- Alan50carrie51tom52Rows.SQL> Commit-Complete.
Ostrzeżenie
- Utwórz kopię zapasową tabeli, aby porównać i pokazywać zawartość tabeli przed usunięciem cokolwiek (jeśli masz jakiekolwiek pytania).
SQL> Utwórz Alan stołowy.Imion_backup jako wybór * z utworzonego tabeli nazw.