Semasa bekerja di Oracle, anda mungkin mendapati beberapa rekod anda mempunyai pendua. Anda boleh menghapus baris pendua ini dengan mengenal pasti dan menggunakan RowID, atau alamat barisnya. Sebelum memulakan, anda harus membuat jadual sandaran sekiranya anda perlu merujuknya setelah anda memadam rekod.
Langkah-langkah
Kaedah 1 dari 4: Mengenal pasti Pendua Anda
Langkah 1. Kenal pasti pendua
Dalam kes ini, kenal pasti contoh pendua, "Alan." Pastikan bahawa rekod yang anda cuba hapuskan sebenarnya adalah pendua dengan memasukkan SQL di bawah.
Langkah 2. Mengenal pasti dari lajur bernama "Nama
"Sebagai contoh lajur bernama" Nama, "anda akan mengganti" column_name "dengan Nama.
Langkah 3. Mengenal pasti dari lajur lain
Sekiranya anda cuba mengenal pasti pendua dengan lajur yang berbeza, misalnya usia Alan dan bukan namanya, anda akan memasukkan "Umur" di tempat "nama_nama" dan seterusnya.
pilih kolom_nama, hitung (kolom_nama) dari kumpulan jadual dengan kolum_nama mempunyai kiraan (nama_nama lajur)> 1;
Kaedah 2 dari 4: Menghapus Pendua Tunggal
Langkah 1. Pilih "nama dari nama
"Selepas" SQL, "singkatan dari Standard Query Language, masukkan" pilih nama dari nama."
Langkah 2. Padamkan semua baris dengan nama pendua
Selepas "SQL," masukkan "hapus dari nama di mana nama = 'Alan';." Perhatikan bahawa penggunaan huruf besar penting di sini, jadi ini akan menghapus semua baris bernama "Alan." Selepas "SQL," masukkan "komit."
Langkah 3. Sewa baris tanpa pendua
Sekarang setelah anda memadamkan semua baris dengan nama contoh "Alan," anda boleh memasukkan satu belakang dengan memasukkan "masukkan ke dalam nilai nama ('Alan');." Selepas "SQL," masukkan "komit" untuk membuat baris baru anda.
Langkah 4. Lihat senarai baru anda
Setelah anda menyelesaikan langkah-langkah di atas, anda boleh memeriksa untuk memastikan anda tidak lagi mempunyai catatan pendua dengan memasukkan "select * from names."
SQL> pilih nama dari nama; NAMA ------------------------------ Alan Carrie Tom Alan baris dipilih. SQL> hapus dari nama di mana nama = 'Alan'; baris dipadamkan. SQL> komit; Komitmen selesai. SQL> masukkan ke dalam nilai nama ('Alan'); baris dibuat. SQL> komit; Komitmen selesai. SQL> pilih * dari nama; NAMA ------------------------------ Alan Carrie Tom baris dipilih.
Kaedah 3 dari 4: Menghapus Pendua Berganda
Langkah 1. Pilih RowID yang ingin anda padamkan
Selepas "SQL," masukkan "pilih rowid, nama dari nama;."
Langkah 2. Padamkan pendua
Selepas "SQL," masukkan "hapus dari nama a di mana rowid> (pilih min (rowid) dari nama b di mana b.name = a.name);" untuk memadam rekod pendua.
Langkah 3. Periksa pendua
Setelah anda menyelesaikan perkara di atas, perintah memeriksa untuk melihat apakah anda masih mempunyai catatan pendua dengan memasukkan "pilih rowid, name from names;" dan kemudian "komited."
SQL> pilih rowid, nama dari nama; NAMA ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Baris Alan dipilih. SQL> hapus dari nama a di mana rowid> (pilih min (rowid) dari nama b di mana b.name = a.name); baris dipadamkan. SQL> pilih rowid, nama dari nama; NAMA ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Baris Tom dipilih. SQL> komit; Komitmen selesai.
Kaedah 4 dari 4: Menghapus Baris dengan Lajur
Langkah 1. Pilih baris anda
Selepas "SQL," masukkan "pilih * dari nama;" untuk melihat barisan anda.
Langkah 2. Padamkan baris pendua dengan mengenal pasti lajurnya
Selepas "SQL '" masukkan "hapus dari nama a di mana rowid> (pilih min (rowid) dari nama b di mana b.name = a.name dan b.age = a.age);" untuk memadam catatan pendua.
Langkah 3. Periksa pendua
Setelah anda menyelesaikan langkah-langkah di atas, masukkan "pilih * dari nama;" dan kemudian "komit" untuk memastikan bahawa anda berjaya memadam rekod pendua.
SQL> pilih * dari nama; NAMA UMUR ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 baris dipilih. SQL> hapus dari nama a di mana rowid> (pilih min (rowid) dari nama b di mana b.name = a.name dan b.age = a.age); baris dipadamkan. SQL> pilih * dari nama; NAMA UMUR ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 baris dipilih. SQL> komit; Komitmen selesai.
Amaran
-
Buat jadual sandaran dalam log masuk anda sendiri yang boleh anda gunakan untuk menunjukkan apa yang ada sebelum penghapusan berlaku (sekiranya ada pertanyaan).
SQL> buat jadual alan.names_backup sebagai pilih * dari nama; Jadual dibuat.