Hvordan bli kvitt like rader i en Oracle SQL Table

March 3

Hvis du bruker Oracle Database, er et vanlig problem like rader i tabeller. Vanligvis er dette som skjer når entydige begrensninger fjernes under lasting. Hva kan være årsaken, kan du fjerne like poster. Like poster har identiske verdier for alle kolonner (eller kolonner som er en del av unik nøkkel).

Når du har mestret teknikken beskrevet i denne artikkelen, anbefaler jeg at du sjekker ut Database Design Resource for å lære mer om god database normaliseringsteknikker.

Det er mer enn én måte å slette like poster. La oss anta Table_A har følgende data:

Col1 col2
------ -------
101 201
102 202
103 203
102 202
104 204
101 201

La oss se på den første metoden.

  1. Backup din opprinnelige tabellen. Dette er det viktigste steget!
  2. Sørg for at backup er bra og du kan gjenopprette opprinnelige tabellen hvis du må.
  3. Her er koden for å slette like poster:

    DELETE FROM Table_A en
    HVOR ROWID! = (SELECT MAX (ROWID)
    FRA Table_A b
    WHEREb.col1 = a.col1
    OG b.col2 = a.col2);

    Oracle har en pseudo-kolonne kalt "ROWID", som er unik for hver rad i en tabell. Slik at vi kan bruke den til å slette like poster. Koden ovenfor finner bare ett ROWID for ikke-like poster. For like poster, vil det slette en rekord med lavere ROWID. Hvis det er mer enn to kolonner som utgjør unik nøkkel for en post, så bør du inkludere alle disse kolonnene i WHERE betingelse. Det er to like poster i eksemplet; det spiller ingen rolle hvilken rekord vi slett fordi alle kolonner har de samme verdiene.

  4. Verifisere resultatene dine og forplikte arbeidet ditt.

Nå la oss se på en annen metode.

  1. Backup din opprinnelige tabellen. Dette er fortsatt det viktigste steget!
  2. Sørg for at backup er bra og du kan gjenopprette opprinnelige tabellen hvis du må.
  3. Opprett en midlertidig tabell med unike poster ved hjelp DISTINCT klausulen.
  4. Slett alle oppføringer fra opprinnelige tabellen.
  5. Sett alle poster fra midlertidige tabellen til opprinnelige tabellen.
  6. Verifisere resultatene dine og forplikte arbeidet ditt.

Avhengig av din situasjon, kan du velge en av de to metodene for raskere resultater. Like poster kan forebygges ved hjelp av unike Indexes. Unike avskriftene garanterer at kolonner i indeksen har ingen like verdier.