Tại đây, chúng ta có thể sử dụng khóa chính hoặc Chỉ mục duy nhất trên một bảng có các trường thích hợp để ngăn các bản ghi trùng lặp Show Ví dụ. Bảng sau đây không chứa chỉ mục hoặc khóa chính như vậy, vì vậy nó sẽ cho phép các bản ghi trùng lặp cho first_name và last_name Cú pháp. Ở đây chúng ta phải ngăn nhiều bản ghi có cùng giá trị họ và tên được tạo trong bảng này, thêm khóa chính vào định nghĩa của nó. Khi chúng tôi thực hiện việc này, cũng cần phải khai báo các cột được lập chỉ mục không phải là null, vì khóa chính không cho phép giá trị NULL Cú pháp. TẠO BẢNG người mysql> CHÈN BỎ QUA VÀO người (last_name, first_name)GIÁ TRỊ( 'arjun', 'singh'); mysql> CHÈN BỎ QUA VÀO người (last_name, first_name)GIÁ TRỊ( 'arjun', 'singh'); mysql > chọn * từ người; mysql> THAY THẾ VÀO người (last_name, first_name)GIÁ TRỊ( 'Anuj', 'Kumar'); mysql> THAY THẾ VÀO người (last_name, first_name)GIÁ TRỊ( 'Anuj', 'Kumar'); mysql> chọn * từ người; Đếm và xác định trùng lặp Cú pháp. CREATE TABLE sinh viên mysql> SELECT COUNT(*) AS hàng TỪ sinh viên; mysql> SELECT COUNT(DISTINCT last_name, first_name) NHƯ 'các tên riêng biệt' TỪ sinh viên; Loại bỏ các bản sao bằng cách sử dụng thay thế bảng Một cách để loại bỏ các bản sao khỏi một bảng là chọn các bản ghi duy nhất của nó vào một bảng mới có cùng cấu trúc. Sau đó thay thế bảng ban đầu bằng bảng mới. Nếu một hàng được coi là trùng lặp với một hàng khác chỉ khi toàn bộ hàng giống nhau, chúng ta có thể sử dụng SELECT DISTINCT để chọn các hàng duy nhất mysql> TẠO BẢNG top SELECT DISTINCT * FROM sinh viên; mysql> CHỌN * TỪ ĐẶT HÀNG hàng đầu THEO last_name, first_name; Phương pháp này được sử dụng trong trường hợp không có chỉ mục (mặc dù nó có thể chậm đối với các bảng lớn) và đối với các bảng chứa các giá trị NULL trùng lặp, nó sẽ loại bỏ các giá trị trùng lặp đó Ghi chú. Phương pháp này coi các hàng dành cho Wallace Baxter có các giá trị đường hơi khác nhau là khác biệt Nếu các mục trùng lặp chỉ được xác định đối với một tập hợp con các cột trong bảng, trước tiên hãy tạo một bảng mới có chỉ mục duy nhất, sau đó chọn các hàng trong đó bằng cách sử dụng CHÈN BỎ QUA Cú pháp. mysql> INSERT IGNORE INTO top SELECT * FROM sinh viên; mysql> CHỌN * TỪ ĐẶT HÀNG hàng đầu THEO last_name, first_name; Chỉ mục ngăn các bản ghi có giá trị khóa trùng lặp được chèn vào 'top' và bỏ qua yêu cầu MySQL không dừng lại với lỗi nếu tìm thấy bản sao. Phương pháp này là nếu các cột được lập chỉ mục có thể chứa các giá trị NULL, thì chúng ta phải sử dụng một chỉ mục duy nhất thay vì khóa chính, trong trường hợp đó, chỉ mục sẽ không xóa các khóa null trùng lặp Sau khi tạo bảng mới 'trên cùng' có chứa các hàng duy nhất, hãy sử dụng nó để thay thế bảng sinh viên ban đầu. Kết quả hiệu quả là học sinh sẽ không còn chứa các bản sao mysql> DROP TABLE students; mysql> ALTER TABLE top RENAME TO students; Xóa các bản sao chỉ bằng truy vấn MySQL Tôi có một bảng có các cột sau đây và tôi muốn xóa các cột trùng lặp trên cột url_addr bằng truy vấn MySQL Sau đó, chúng ta có thể sử dụng cú pháp XÓA nhiều bảng như sau để xóa các mục trùng lặp, chỉ để lại url đầu tiên dựa trên url_id Cơ sở dữ liệu của chúng tôi có một bảng tên là Hãy lấy tên của các quốc gia mà không trùng lặp Dung dịchChúng tôi sẽ sử dụng từ khóa SELECT DISTINCT country FROM City; Đây là kết quả của truy vấn đất nướcTây Ban NhaBa LanThảo luậnNếu bạn muốn truy vấn chỉ trả về các hàng duy nhất, hãy sử dụng từ khóa Làm thế nào để nó hoạt động dưới mui xe? Trong ví dụ của chúng tôi, cả Tây Ban Nha và Ba Lan đều xuất hiện hai lần trong bảng. Tuy nhiên, sau khi áp dụng từ khóa Làm cách nào để loại bỏ các bản sao trong truy vấn CHỌN của MySQL?Cách xóa các hàng trùng lặp trong MySQL . Thiết lập cơ sở dữ liệu thử nghiệm. Tạo cơ sở dữ liệu thử nghiệm. Thêm bảng và dữ liệu. Hiển thị nội dung của bảng ngày Hiển thị hàng trùng lặp Loại bỏ các hàng trùng lặp. lựa chọn 1. Xóa các hàng trùng lặp bằng INNER JOIN. Lựa chọn 2. Xóa các hàng trùng lặp bằng bảng trung gian Làm cách nào để tránh các bản ghi trùng lặp trong MySQL?Lưu ý − Sử dụng lệnh INSERT IGNORE thay vì lệnh INSERT . Nếu một bản ghi không trùng lặp với một bản ghi hiện có, thì MySQL sẽ chèn nó như bình thường. Nếu bản ghi trùng lặp, thì từ khóa IGNORE yêu cầu MySQL loại bỏ nó một cách âm thầm mà không tạo ra lỗi.
Làm cách nào bạn có thể loại bỏ các bản ghi trùng lặp trong một bảng bằng truy vấn CHỌN?Thảo luận. Chỉ cần sử dụng từ khóa DISTINCT sau SELECT nếu bạn chỉ muốn chọn các hàng không lặp lại . Từ khóa này buộc truy vấn loại bỏ mọi hàng trùng lặp, chỉ dựa trên các cột bạn đã liệt kê. |