Ενώ εργάζεστε στο Oracle, μπορείτε να βρείτε διπλότυπα σε μερικούς δίσκους. Μπορείτε να αφαιρέσετε διπλές σειρές αναγνωρίζοντάς τις και χρησιμοποιώντας την αντίστοιχη διεύθυνση γραμμής ψευδωνύμου RowID. Πριν ξεκινήσετε, δημιουργήστε έναν εφεδρικό πίνακα σε περίπτωση που χρειάζεστε μια αναφορά μετά τη διαγραφή της εγγραφής.
Βήμα
Μέθοδος 1 από 4: Προσδιορισμός διπλότυπων
Βήμα 1. Προσδιορίστε τα διπλότυπα
Σε αυτό το παράδειγμα, προσδιορίζουμε το διπλό "Alan". Βεβαιωθείτε ότι οι εγγραφές που πρόκειται να διαγραφούν είναι πράγματι διπλές, εισάγοντας το SQL παρακάτω.
Βήμα 2. Προσδιορίστε από τη στήλη με τίτλο "Όνομα"
Σε περίπτωση που η στήλη έχει τον τίτλο "Όνομα", πρέπει να αντικαταστήσετε το "όνομα_στύλου" με Όνομα.
Βήμα 3. Προσδιορίστε τις άλλες στήλες
Εάν προσπαθείτε να προσδιορίσετε διπλότυπα από διαφορετικές στήλες, για παράδειγμα την ηλικία του Alan αντί για το όνομά του, εισαγάγετε "Ηλικία" στη θέση του "name_name" και ούτω καθεξής.
επιλέξτε όνομα_στύλου, μέτρηση (όνομα_στύλου) από την ομάδα πίνακα κατά όνομα_στύλου με αριθμό (όνομα_στύλου)> 1 ·
Μέθοδος 2 από 4: Κατάργηση μεμονωμένων διπλότυπων
Βήμα 1. Επιλέξτε "όνομα από ονόματα"
Μετά το "SQL" (συντομογραφία για Standard Query Language), πληκτρολογήστε "select name from names".
Βήμα 2. Διαγράψτε όλες τις γραμμές με διπλά ονόματα
Μετά το "SQL", πληκτρολογήστε "delete from names where name = 'Alan';." Πρέπει να σημειωθεί ότι η κεφαλαιοποίηση είναι σημαντική εδώ, έτσι ώστε αυτό το βήμα να μπορεί να διαγράψει όλες τις γραμμές με το όνομα "Alan". Μετά το "SQL", πληκτρολογήστε "commit"
Βήμα 3. Εισαγάγετε ξανά σειρές χωρίς διπλότυπα
Τώρα που διαγράψατε όλες τις γραμμές και τις αντικαταστήσατε με "Alan", συμπληρώστε μία ξανά εισάγοντας "insert in name name ('Alan');." Μετά το "SQL", εισαγάγετε "δέσμευση" για να δημιουργήσετε μια νέα γραμμή.
Βήμα 4. Προβάλετε τη νέα λίστα
Αφού ολοκληρώσετε τα παραπάνω βήματα, μπορείτε να ελέγξετε για να βεβαιωθείτε ότι δεν υπάρχουν άλλες διπλές εγγραφές εισάγοντας "επιλογή * από ονόματα".
SQL> επιλέξτε όνομα από ονόματα. ΟΝΟΜΑ ------------------------------ Alan Citra Tomi Alan Baris επιλεγμένο. SQL> διαγραφή από ονόματα όπου όνομα = 'Alan'; Η γραμμή διαγράφεται. SQL> δεσμεύει / Η δέσμευση ολοκληρώθηκε. SQL> εισαγωγή τιμών σε ονόματα («Alan»). σειρά δημιουργήθηκε. SQL> δεσμεύει Η δέσμευση ολοκληρώθηκε. SQL> επιλέξτε * από ονόματα. ΟΝΟΜΑ ------------------------------ Επιλέχθηκαν οι σειρές Alan Citra Tomi.
Μέθοδος 3 από 4: Κατάργηση πολλαπλών διπλότυπων
Βήμα 1. Επιλέξτε το RowID που θέλετε να διαγράψετε
Μετά το "SQL", πληκτρολογήστε "select rowid, name from names;."
Βήμα 2. Αφαιρέστε τα διπλότυπα
Μετά το "SQL", πληκτρολογήστε "διαγραφή από τα ονόματα a where rowid> (επιλέξτε min (rowid) από τα ονόματα b όπου b.name = a.name);" για να αφαιρέσετε διπλότυπα.
Βήμα 3. Ελέγξτε για διπλότυπα
Αφού ολοκληρώσετε τα παραπάνω βήματα, ελέγξτε για διπλότυπα εισάγοντας "select rowid, name from names;" τότε "δεσμεύσου".
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", πληκτρολογήστε "select * from names;" για να μπορέσω να δω τη γραμμή.
Βήμα 2. Καταργήστε τις διπλές σειρές προσδιορίζοντας τις στήλες τους
Μετά το "SQL" "εισάγετε" διαγράψτε από τα ονόματα a where rowid> (επιλέξτε min (rowid) από τα ονόματα b όπου b.name = a.name και b.age = a.age); " για να αφαιρέσετε διπλές εγγραφές.
Βήμα 3. Ελέγξτε για διπλότυπα
Αφού ολοκληρώσετε τα παραπάνω βήματα, πληκτρολογήστε "select * from names;" τότε "δεσμευτείτε" για να δείτε αν τα διπλότυπα έχουν πράγματι αφαιρεθεί.
SQL> επιλέξτε * από ονόματα. ΟΝΟΜΑ ΗΛΙΚΙΑ ---------------------------------------------- Alan 50 Citra 51 Tomi 52 Alan 50 επιλεγμένες σειρές. SQL> διαγραφή από ονόματα a where rowid> (επιλέξτε min (rowid) από ονόματα b όπου b.name = a.name και b.age = a.age); η σειρά διαγράφηκε. SQL> επιλέξτε * από ονόματα. NAME AGE ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 σειρές επιλεγμένες Το SQL> δεσμεύει Η δέσμευση ολοκληρώθηκε.
Προειδοποίηση
-
Δημιουργήστε έναν διπλό πίνακα στη σύνδεσή σας, ώστε να μπορεί να χρησιμοποιηθεί ως αναφορά περιεχομένου όταν δεν έχουν διαγραφεί δεδομένα (σε περίπτωση που έχετε απορίες).
SQL> δημιουργία πίνακα alan.names_backup ως select * από ονόματα. Δημιουργήθηκε πίνακας.