Dieser Artikel wurde durch speziell ausgebildete Mitglieder unseres Mitarbeiter-Teams bearbeitet, was Vollständigkeit und Genauigkeit garantiert.
How.com.vn's Kontroll-Management Team prüft die bearbeiteten Inhalte sorgfältig, um zu garantieren, dass jeder Einzelne den hohen Qualitätsansprüchen entspricht.
Dieser Artikel wurde 7.641 Mal aufgerufen.
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.
Vorgehensweise
- Identifiziere das Duplikat. 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.
- Identifizieren in einer Spalte mit der Bezeichnung "Namen". In diesem Fall würdest du "column_name" durch "Namen" ersetzen.
- In anderen Spalten identifizieren. 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_namehaving count (column_name) > 1;
Werbeanzeige
- Wähle "name from Namen". Gib nach "SQL" (dies steht für Standard Query Language) "select name from Namen" ein.
- Lösche alle Zeilen mit dem doppelten Namen. 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]
- Gib die Zeile ohne Duplikat neu ein. 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.
- Sieh dir deine neue Liste an. 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------------------------------AlanCarrieTomAlanrows 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------------------------------AlanCarrieTomrows selected.
Werbeanzeige
- Wähle die RowID, die du löschen möchtest. Gib nach "SQL" "select rowid, name from names;" ein.
- Lösche das Duplikat. 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]
- Prüfe auf Duplikate. 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 AlanAABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD TomAABJnsAAGAAAdfOAAF Alanrows selected.SQL > delete from names awhere rowid > (select min(rowid) from names bwhere b.name=a.name);rows deleted.SQL > select rowid,name from names;ROWID NAME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tomrows selected.SQL > commit;Commit complete.
Werbeanzeige
- Wähle deine Zeilen. Gib nach "SQL" "select * from names;" ein, um deine Zeilen zu sehen.
- Lösche doppelte Zeilen, indem du ihre Spalten identifizierst. 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]
- Prüfe auf Duplikate. 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 50Carrie 51Tom 52Alan 50rows selected.SQL > delete from names awhere rowid > (select min(rowid) from names bwhere b.name=a.nameand b.age=a.age);row deleted.SQL > select * from names;NAME AGE------------------------------ ----------Alan 50Carrie 51Tom 52rows 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.
Referenzen
War dieser Artikel hilfreich?
⚠️ Disclaimer:
Content from Wiki How Deutsch language website. Text is available under the Creative Commons Attribution-Share Alike License; additional terms may apply.
Wiki How does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain, or use, reproduce, or republish the information contained herein.
- - A few of these subjects are frequently censored by educational, governmental, corporate, parental and other filtering schemes.
- - Some articles may contain names, images, artworks or descriptions of events that some cultures restrict access to
- - Please note: Wiki How does not give you opinion about the law, or advice about medical. If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.
- - Readers should not judge the importance of topics based on their coverage on Wiki How, nor think a topic is important just because it is the subject of a Wiki article.