PDF download PDF herunterladen PDF download PDF herunterladen

Wenn du mit Oracle arbeitest, stellst du vielleicht hin und wieder fest, dass einige deiner Datensätze Duplikate haben. Du kannst diese doppelten Zeilen löschen, indem du sie identifizierst und ihre RowID, d.h. ihre "Zeilenadresse" nutzt. Zuerst solltest du allerdings ein Backup deiner Tabelle erstellen, falls du nach dem Löschen von Datensätzen auf diese referenzieren musst.

Methode 1
Methode 1 von 4:

Die Duplikate identifizieren

PDF download PDF herunterladen
  1. Identifiziere in diesem Fall das Beispiel-Duplikat "Alan". Stelle sicher, dass die Datensätze, die du löschen möchtest, tatsächlich Duplikate sind, indem du den SQL-Befehl unten eingibst.
  2. In diesem Fall würdest du "column_name" durch "Namen" ersetzen.
  3. Wenn du das Duplikat in einer anderen Spalte identifizieren möchtest, z. B. das Alter von Alan anstelle seines Namens, würdest du anstelle von "column_name" "Alter" eingeben und so weiter.
     select 
     column_name 
     , 
     count 
     ( 
     column_name 
     ) 
     from 
     table 
     group 
     by 
     column_name 
     having 
     count 
     ( 
     column_name 
     ) 
     > 
     1 
     ; 
    
    Werbeanzeige
Methode 2
Methode 2 von 4:

Ein einzelnes Duplikat löschen

PDF download PDF herunterladen
  1. Gib nach "SQL" (dies steht für Standard Query Language) "select name from Namen" ein.
  2. Gib nach "SQL" "delete from Namen where name='Alan';" ein. Achte darauf, dass Groß- und Kleinschreibung hier wichtig ist, dies löscht also alle Zeilen mit dem Namen "Alan". Gib nach "SQL" "commit" ein. [1]
  3. Jetzt, wo du alle Zeilen mit dem Beispielnamen "Alan" gelöscht hast, kannst du eine wieder einfügen, indem du "insert into name values ('Alan');" eingibst. Gib nach "SQL" "commit" ein, um deine neue Zeile zu erstellen.
  4. Wenn du die Schritte oben ausgeführt hast, kannst du prüfen, ob es keine doppelten Datensätze mehr gibt, indem du "select * from Namen" eingibst.
     SQL 
     > 
     select 
     name 
     from 
     Namen 
     ; 
     NAME 
     
    Alan Carrie Tom Alan rows selected . SQL > delete from names where name = 'Alan' ; rows deleted . SQL > commit ; Commit complete . SQL > insert into names values ( 'Alan' ); row created . SQL > commit ; Commit complete . SQL > select * from names ; NAME
    Alan Carrie Tom rows selected .
    Werbeanzeige
Methode 3
Methode 3 von 4:

Mehrere Duplikate löschen

PDF download PDF herunterladen
  1. Gib nach "SQL" "select rowid, name from names;" ein.
  2. Gib nach "SQL" "delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);" ein, um doppelte Datensätze zu löschen. [2]
  3. Nachdem du die Schritte oben ausgeführt hast, prüfe, ob du noch immer doppelte Datensätze hast, indem du "select rowid,name from names;" und dann "commit" eingibst.
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAB 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     AABJnsAAGAAAdfOAAF 
     Alan 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     ); 
     rows 
     deleted 
     . 
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    Werbeanzeige
Methode 4
Methode 4 von 4:

Zeilen mit Spalten löschen

PDF download PDF herunterladen
  1. Gib nach "SQL" "select * from names;" ein, um deine Zeilen zu sehen.
  2. Gib nach "SQL" "delete from names a where rowid > (select min(rowid) from names b where b.name=a.name and b.age=a.age);" ein, um die doppelten Datensätze zu löschen. [3]
  3. Wenn du die Schritte oben ausgeführt hast, gib "select * from names;" und dann "commit" ein, um zu überprüfen, ob du die doppelten Datensätze erfolgreich gelöscht hast.
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     Alan 
     50 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     and 
     b 
     . 
     age 
     = 
     a 
     . 
     age 
     ); 
     row 
     deleted 
     . 
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    Werbeanzeige

Warnungen

  • Erstelle unter deinem eigenen Login ein Backup der Tabelle, die du verwenden kannst, um zu zeigen, was vorhanden war, bevor du etwas gelöscht hast (falls irgendwelche Fragen auftauchen).
     SQL 
     > 
     create 
     table 
     alan 
     . 
     names_backup 
     as 
     select 
     * 
     from 
     names 
     ; 
     Table 
     created 
     . 
    
Werbeanzeige

Über dieses wikiHow

Diese Seite wurde bisher 8.128 mal abgerufen.

War dieser Artikel hilfreich?

Werbeanzeige