Όταν εργάζεστε στο Oracle, μπορεί να διαπιστώσετε ότι ορισμένα από τα αρχεία σας έχουν διπλότυπα. Μπορείτε να διαγράψετε αυτές τις διπλές σειρές αναγνωρίζοντάς τις και χρησιμοποιώντας το RowID ή τη διεύθυνση σειράς. Πριν ξεκινήσετε, θα πρέπει να δημιουργήσετε έναν εφεδρικό πίνακα σε περίπτωση που χρειαστεί να τους αναφέρετε αφού έχετε διαγράψει εγγραφές.
Βήματα
Μέθοδος 1 από 4: Προσδιορισμός του αντιγράφου σας
Βήμα 1. Προσδιορίστε το αντίγραφο
Σε αυτήν την περίπτωση, προσδιορίστε το παράδειγμα διπλότυπου, "Alan". Βεβαιωθείτε ότι οι εγγραφές που προσπαθείτε να διαγράψετε είναι στην πραγματικότητα διπλές, εισάγοντας το SQL παρακάτω.
Βήμα 2. Προσδιορισμός από μια στήλη με το όνομα "Ονόματα
"Στην περίπτωση μιας στήλης με το όνομα" Ονόματα ", θα αντικαταστήσατε το" όνομα_στύλου "με Ονόματα.
Βήμα 3. Προσδιορισμός από άλλες στήλες
Εάν προσπαθούσατε να προσδιορίσετε το αντίγραφο με διαφορετική στήλη, για παράδειγμα την ηλικία του Alan και όχι το όνομά του, θα εισαγάγατε "Ages" στη θέση του "name_name" και ούτω καθεξής.
επιλέξτε όνομα_στύλου, μέτρηση (όνομα_στύλου) από την ομάδα πίνακα κατά όνομα_στύλου με αριθμό (όνομα_στύλου)> 1 ·
Μέθοδος 2 από 4: Διαγραφή μεμονωμένου διπλότυπου
Βήμα 1. Επιλέξτε "όνομα από ονόματα
"Μετά το" SQL ", που σημαίνει Standard Query Language, πληκτρολογήστε" select name from names."
Βήμα 2. Διαγράψτε όλες τις γραμμές με το διπλό όνομα
Μετά το "SQL", εισαγάγετε "διαγραφή από ονόματα όπου όνομα = 'Alan';." Σημειώστε ότι η κεφαλαιοποίηση είναι σημαντική εδώ, οπότε θα διαγραφούν όλες οι γραμμές με το όνομα "Alan". Μετά το "SQL", πληκτρολογήστε "commit".
Βήμα 3. Ενοικιάστε τη σειρά χωρίς διπλότυπο
Τώρα που διαγράψατε όλες τις σειρές με το παράδειγμα του ονόματος "Alan", μπορείτε να εισαγάγετε μία πίσω εισάγοντας το "insert in name name ('Alan');." Μετά το "SQL", εισαγάγετε "δέσμευση" για να δημιουργήσετε τη νέα σας σειρά.
Βήμα 4. Δείτε τη νέα σας λίστα
Αφού ολοκληρώσετε τα παραπάνω βήματα, μπορείτε να ελέγξετε για να βεβαιωθείτε ότι δεν έχετε πλέον διπλές εγγραφές εισάγοντας "επιλέξτε * από ονόματα".
SQL> επιλέξτε όνομα από ονόματα. ΟΝΟΜΑ ------------------------------ Επιλέχθηκαν οι σειρές Alan Carrie Tom Alan. SQL> διαγραφή από ονόματα όπου όνομα = 'Alan'; οι σειρές διαγράφηκαν. SQL> δέσμευση Η δέσμευση ολοκληρώθηκε. SQL> εισαγωγή τιμών σε ονόματα («Alan»). σειρά δημιουργήθηκε. SQL> δέσμευση Η δέσμευση ολοκληρώθηκε. SQL> επιλέξτε * από ονόματα. ΟΝΟΜΑ ------------------------------ Επιλέχθηκαν οι σειρές του Άλαν Κάρι Τομ.
Μέθοδος 3 από 4: Διαγραφή πολλαπλών διπλότυπων
Βήμα 1. Επιλέξτε το RowID που θέλετε να διαγράψετε
Μετά το "SQL", εισαγάγετε "επιλέξτε rowid, όνομα από ονόματα;."
Βήμα 2. Διαγράψτε το διπλότυπο
Μετά το "SQL," enter "διαγράψτε από τα ονόματα a where rowid> (επιλέξτε min (rowid) από τα ονόματα b όπου b.name = a.name);" για διαγραφή διπλών εγγραφών.
Βήμα 3. Ελέγξτε για διπλότυπα
Αφού ολοκληρώσετε τα παραπάνω, οι εντολές ελέγχουν αν εξακολουθείτε να έχετε διπλές εγγραφές εισάγοντας "επιλέξτε σειρά, όνομα από ονόματα;" και μετά «δεσμεύσου».
SQL> επιλέξτε rowid, όνομα από ονόματα. ROWID NAME ------------------ ---------------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan σειρές επιλεγμένες. SQL> διαγραφή από ονόματα a where rowid> (επιλέξτε min (rowid) από ονόματα b όπου b.name = a.name)? οι σειρές διαγράφηκαν. SQL> επιλέξτε rowid, όνομα από ονόματα. ROWID NAME ------------------ ---------------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Επιλεγμένες σειρές Tom. SQL> δέσμευση Η δέσμευση ολοκληρώθηκε.
Μέθοδος 4 από 4: Διαγραφή γραμμών με στήλες
Βήμα 1. Επιλέξτε τις σειρές σας
Μετά το "SQL", εισαγάγετε "επιλέξτε * από τα ονόματα." για να δεις τις σειρές σου.
Βήμα 2. Διαγράψτε διπλές σειρές προσδιορίζοντας τη στήλη τους
Μετά το "SQL" "εισαγάγετε" διαγράψτε από τα ονόματα a where rowid> (επιλέξτε min (rowid) από τα ονόματα b όπου b.name = a.name και b.age = a.age); " για να διαγράψετε τις διπλές εγγραφές.
Βήμα 3. Ελέγξτε για διπλότυπα
Αφού ολοκληρώσετε τα παραπάνω βήματα, πληκτρολογήστε "select * from names;" και στη συνέχεια "δέσμευση" για να ελέγξετε ότι έχετε διαγράψει επιτυχώς τις διπλές εγγραφές.
SQL> επιλέξτε * από ονόματα. NAME AGE ---------------------------------------------- Alan 50 Carrie 51 Tom 52 Alan 50 επιλεγμένες σειρές. SQL> διαγραφή από ονόματα a where rowid> (επιλέξτε min (rowid) από ονόματα b όπου b.name = a.name και b.age = a.age); η σειρά διαγράφηκε. SQL> επιλέξτε * από ονόματα. NAME AGE ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 επιλεγμένες σειρές Το SQL> δέσμευση Η δέσμευση ολοκληρώθηκε.
Προειδοποιήσεις
-
Δημιουργήστε έναν εφεδρικό πίνακα στη δική σας είσοδο που μπορείτε να χρησιμοποιήσετε για να δείξετε τι υπήρχε πριν από τη διαγραφή (σε περίπτωση που υπάρχουν ερωτήσεις).
SQL> δημιουργία πίνακα alan.names_backup ως select * από ονόματα. Δημιουργήθηκε πίνακας.