Khi bạn làm việc với Oracle, đôi khi bạn sẽ gặp phải tình trạng dữ liệu bị trùng lặp. Để giải quyết vấn đề này, bạn có thể xóa các bản ghi trùng lặp bằng cách sử dụng RowID hoặc chỉ mục của chúng. Trước khi thực hiện, đảm bảo sao lưu cơ sở dữ liệu để tránh mất mát dữ liệu.
Bước thực hiện
Phát hiện dữ liệu trùng lặp

Xác định dữ liệu trùng lặp. Trong ví dụ này, chúng ta sẽ tìm dữ liệu trùng lặp dựa trên tên 'Alan'. Đảm bảo rằng dữ liệu cần xóa thực sự là trùng lặp bằng cách sử dụng ngôn ngữ truy vấn SQL (Standard Query Language) như dưới đây.

Tìm kiếm trong cột 'Tên'.

Tìm kiếm trong các cột khác. Nếu bạn muốn xác định dữ liệu trùng lặp trong các cột khác như tuổi của Alan thay vì tên, hãy nhập 'Tuổi' vào thay vì 'Tên', và những trường hợp khác cũng tương tự.
Xóa một bản ghi trùng lặp

Chọn 'tên từ tên'. Sau 'SQL,' nhập tiếp 'chọn tên từ tên'.

Xóa tất cả các dòng có tên trùng lặp. Sau 'SQL,' nhập 'xóa từ tên nơi tên='Alan';'. Lưu ý việc viết hoa là quan trọng vì điều này sẽ xóa tất cả các dòng có tên 'Alan”. Sau 'SQL,' nhập 'hoàn thành'.

Nhập lại dòng không có dữ liệu trùng lặp. Bây giờ sau khi đã xóa hết các dòng có tên 'Alan,' bạn có thể chèn lại một tên mới bằng cách nhập 'chèn vào tên giá trị ('Alan');'. Sau 'SQL,' nhập 'hoàn thành' để thực hiện tạo dòng mới.

Xem danh sách mới. Sau khi đã hoàn tất các bước trên, bạn có thể kiểm tra để chắc chắn rằng không còn dữ liệu trùng lặp bằng cách gõ 'chọn * từ tên'.
Xóa nhiều bản ghi trùng lặp

Chọn RowID mà bạn muốn xóa. Sau 'SQL,' bạn nhập 'chọn rowid, tên từ tên;'.

Xóa dữ liệu trùng lặp. Sau 'SQL,' nhập 'xóa từ tên a nơi rowid > (chọn min(rowid) từ tên b nơi b.tên=a.tên);' để xóa các bản ghi trùng lặp.

Kiểm tra dữ liệu trùng lặp. Sau khi hoàn tất các bước trên, kiểm tra xem còn dòng nào giống nhau không bằng cách nhập lệnh 'chọn rowid,tên từ tên;' và 'hoàn thành'.
Xóa dòng với cột

Chọn dòng. Sau 'SQL,' nhập 'chọn * từ tên;' để xem dòng bạn cần.

Xóa những dòng giống nhau bằng cách xác định cột của chúng. Sau 'SQL,' bạn nhập 'xóa từ tên a nơi rowid > (chọn min(rowid) từ tên b nơi b.tên=a.tên và b.age=a.age);' để xóa dữ liệu trùng lặp.

Kiểm tra dữ liệu trùng lặp. Sau khi hoàn tất các bước trên, nhập 'chọn * từ tên;' và 'hoàn thành' để kiểm tra xem bạn đã xóa hết dữ liệu trùng lặp chưa.
Cảnh báo
Trước khi xóa dữ liệu, hãy sao lưu cơ sở dữ liệu để có thể xem lại khi cần thiết.