Kako izbrisati ponavljanje unosa u oracleu
Ponavljajuće linije u Oracle mogu se diferencirati samo putem "Rowide" (line adrese).
Korake
jedan. Uklonite niz pomoću Rowida. Ovo je najlakši način uklanjanja zapisa.
SQL> Odaberite Rowid, naziv iz imena-Rowidinname ------------------ ---------------------- -------- Aabjnsaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaac Carrieaabjnsaagaaadfoaad Tom4 Redovi odabrani.SQL> Izbriši iz imena gde Rowid = `Aabjnsaagaaadfoaaa`-1 Red izbrisan.SQL> Završiti počinjenje.SQL> Odaberite Rowid, naziv iz imena-rowidname ------------------ -------------------- Aabjnsaagaaaaaaaaaaaac carrieaabjnsaagaaadfoaad Tom3 redovi odabrani.
2. Izbrišite sve ponavljajuće linije osim jednog.
SQL> Odaberite Naziv iz imena ------------------------------ Alancarrietomalan4 Redovi su odabrani.SQL> Izbriši iz imena u kojima je Ime = `Alan`-2 redovi izbrisani.SQL> Završiti počinjenje.SQL> Umetnite u vrijednosti imena (`alan`) - 1 red je stvoren.SQL> Završiti počinjenje.SQL> Odaberite * Iz imena imena ------------------------------ Alancarrietomrows izabrani.
3. Upotrijebite maks ili min funkcija za reordiranje i brisanje svih ostalih linija. U ovom slučaju, ako postoji nekoliko duplikata, oni će biti izbrisani.
SQL> Odaberite Rowid, naziv iz imena-Rowidinname ------------------ ---------------------- -------- Aabjnsaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaac Carrieaabjansaagaaadfoaad TomaabjnsaAgaaadfoaaf Alan5 Redovi izabrani.SQL> Izbriši iz imena A2Gde Rowid> (Odaberite min (Rowid) iz imena b3gdje b.Ime = A.Name4) -2 redovi izbrisani.SQL> Odaberite Rowid, naziv iz imena-Rowidinname ------------------ ---------------------- -------- Aabjnsaagaaadfoaaaaacaac Carrieaabjnsaac Carrieaabjnsaagaaadfoaad Tom3 Redovi odabrani.SQL> Završiti počinjenje.}}
[[Slika: Izbriši duplikat zapise u Oracle Korak 4.JPG | Centar | 550px]] {{Codebox | lang ="Oracle8"> SQL> Odaberite * Iz imena-nameage ------------------------------ ---------- Alan50Carrie51tom52Alan504 Redovi su odabrani.SQL> Izbriši iz imena A2Gde Rowid> (Odaberite min (Rowid) iz imena b3gdje b.Ime = A.Naziv4and B.Starost = A.Starost5) -1 Red izbrisan.SQL> Odaberite * Iz imena-nameage ------------------------------ ---------- Alan50Carrie51tom52rovodi izabrani.SQL> Završiti počinjenje.
Upozorenja
- Stvorite sigurnosnu kopiju tablice za usporedbu i prikaz sadržaja tablice prije brisanja bilo čega (ako imate bilo kakvih pitanja).
SQL> Kreirajte tablicu Alana.Imena_backup kao odabir * Iz tabele imena stvorena.