Khi làm việc trong Oracle, bạn có thể thấy rằng một số bản ghi của bạn có các bản ghi. Bạn có thể xóa các hàng trùng lặp này bằng cách xác định chúng và sử dụng RowID hoặc địa chỉ hàng của nó. Trước khi bắt đầu, bạn nên tạo một bảng dự phòng trong trường hợp bạn cần tham chiếu chúng sau khi bạn đã xóa các bản ghi.
Các bước
Phương pháp 1 trong 4: Xác định bản sao của bạn
Bước 1. Xác định bản sao
Trong trường hợp này, hãy xác định bản sao ví dụ, "Alan". Đảm bảo rằng các bản ghi bạn đang cố gắng xóa thực sự là bản sao bằng cách nhập SQL bên dưới.
Bước 2. Xác định từ một cột có tên là "Tên
"Trong trường hợp của một cột có tên là" Tên ", bạn sẽ thay thế" tên_mạch "bằng Tên.
Bước 3. Xác định từ các cột khác
Nếu bạn đang cố gắng xác định trùng lặp bằng một cột khác, chẳng hạn như tuổi của Alan thay vì tên của anh ấy, bạn sẽ nhập "Tuổi" vào vị trí của "column_name", v.v.
chọn tên cột, đếm (tên cột) từ nhóm bảng theo tên cột có số lượng (tên cột)> 1;
Phương pháp 2/4: Xóa một bản sao
Bước 1. Chọn "tên từ tên
"Sau" SQL ", viết tắt của Ngôn ngữ Truy vấn Chuẩn, hãy nhập" chọn tên từ các tên ".
Bước 2. Xóa tất cả các hàng có tên trùng lặp
Sau "SQL," enter "xóa khỏi các tên mà name = 'Alan';." Lưu ý rằng việc viết hoa là quan trọng ở đây, vì vậy, điều này sẽ xóa tất cả các hàng có tên "Alan". Sau "SQL", hãy nhập "cam kết".
Bước 3. Cho thuê hàng không có bản sao
Bây giờ bạn đã xóa tất cả các hàng có tên ví dụ "Alan", bạn có thể chèn lại một hàng bằng cách nhập "chèn vào giá trị tên ('Alan');." Sau "SQL", hãy nhập "cam kết" để tạo hàng mới của bạn.
Bước 4. Xem danh sách mới của bạn
Khi bạn đã hoàn thành các bước trên, bạn có thể kiểm tra để đảm bảo rằng bạn không còn bản ghi trùng lặp bằng cách nhập "chọn * từ tên".
SQL chọn tên từ các tên; TÊN ------------------------------ Alan Carrie Tom Alan hàng được chọn. SQL> xóa khỏi tên nơi name = 'Alan'; hàng đã bị xóa. SQL cam kết; Cam kết hoàn thành. SQL chèn vào các giá trị tên ('Alan'); hàng đã tạo. SQL cam kết; Cam kết hoàn thành. SQL chọn * từ tên; TÊN ------------------------------ Các hàng của Alan Carrie Tom đã được chọn.
Phương pháp 3/4: Xóa nhiều bản sao
Bước 1. Chọn RowID bạn muốn xóa
Sau "SQL", hãy nhập "chọn rowid, tên từ tên;."
Bước 2. Xóa bản sao
Sau "SQL," enter "xóa khỏi các tên a mà rowid> (chọn min (rowid) từ các tên b trong đó b.name = a.name);" để xóa các bản ghi trùng lặp.
Bước 3. Kiểm tra các bản sao
Sau khi bạn đã hoàn thành những điều trên, các lệnh kiểm tra xem bạn có còn bản ghi trùng lặp hay không bằng cách nhập "select rowid, name from names;" và sau đó "cam kết".
SQL chọn rowid, tên từ tên; TÊN ROWID ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF hàng Alan đã được chọn. SQL> xóa khỏi tên a nơi rowid> (chọn min (rowid) từ tên b trong đó b.name = a.name); hàng đã bị xóa. SQL chọn rowid, tên từ tên; TÊN ROWID ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom đã chọn hàng. SQL cam kết; Cam kết hoàn thành.
Phương pháp 4/4: Xóa hàng có cột
Bước 1. Chọn hàng của bạn
Sau "SQL", hãy nhập "chọn * từ tên;" để xem các hàng của bạn.
Bước 2. Xóa các hàng trùng lặp bằng cách xác định cột của chúng
Sau "SQL", hãy nhập "xóa khỏi các tên a mà rowid> (chọn min (rowid) từ các tên b trong đó b.name = a.name và b.age = a.age);" để xóa các bản ghi trùng lặp.
Bước 3. Kiểm tra các bản sao
Khi bạn đã hoàn thành các bước trên, hãy nhập "select * from names;" và sau đó "cam kết" để kiểm tra xem bạn đã xóa các bản ghi trùng lặp thành công hay chưa.
SQL chọn * từ tên; TÊN TUỔI -------------------------------------------------- Alan 50 Carrie 51 Tom 52 Alan 50 hàng đã chọn. SQL> xóa khỏi các tên a trong đó rowid> (chọn min (rowid) từ các tên b trong đó b.name = a.name và b.age = a.age); hàng đã bị xóa. SQL chọn * từ tên; TÊN TUỔI -------------------------------------------------- Alan 50 Carrie 51 Tom 52 hàng được chọn. SQL cam kết; Cam kết hoàn thành.
Cảnh báo
-
Tạo một bảng sao lưu trong lần đăng nhập của riêng bạn mà bạn có thể sử dụng để hiển thị những gì đã có trước khi bất kỳ hành động xóa nào xảy ra (trong trường hợp có bất kỳ câu hỏi nào).
SQL tạo bảng alan.names_backup như select * từ các tên; Đã tạo bảng.