Cách xóa các hàng trùng lặp trong MySQL {3 cách xóa} – mysql xóa một hàng

Các hàng trùng lặp trong MySQL có thể ảnh hưởng đến hiệu suất cơ sở dữ liệu. Tìm hiểu 3 cách xóa các hàng trùng lặp khỏi bảng MySQL. Xóa chúng ngay bây giờ!

Bạn đang xem : mysql xóa một hàng

Giới thiệu

Có một số trường hợp bạn có thể gặp các hàng trùng lặp trong cơ sở dữ liệu MySQL của mình. Hướng dẫn này sẽ hướng dẫn bạn quy trình về cách loại bỏ các giá trị hàng trùng lặp trong MySQL.

Hướng dẫn về cách loại bỏ các giá trị trùng lặp trong MySQL.

Điều kiện tiên quyết

  • Hệ thống đã cài đặt MySQL
  • Tài khoản người dùng gốc MySQL
  • Truy cập vào cửa sổ đầu cuối / dòng lệnh (Ctrl-Alt-T, Tìm kiếm & gt; Terminal)

Thiết lập cơ sở dữ liệu thử nghiệm

Nếu bạn đã có cơ sở dữ liệu MySQL để làm việc, hãy chuyển sang phần tiếp theo.

Nếu không, hãy mở cửa sổ dòng lệnh và nhập nội dung sau:

  mysql –u root –p  

Khi được nhắc, hãy nhập mật khẩu root để cài đặt MySQL của bạn. Nếu bạn có một tài khoản người dùng cụ thể, hãy sử dụng các thông tin đăng nhập đó thay vì root.

ảnh chụp màn hình Đăng nhập vào MySQL shell

Lời nhắc hệ thống sẽ chuyển thành:

  mysql & gt;  

Lưu ý: Nếu bạn không thể kết nối với máy chủ MySQL, bạn có thể nhận được thông báo rằng quyền truy cập đã bị từ chối. Tham khảo bài viết của chúng tôi về cách giải quyết lỗi MySQL này nếu bạn cần hỗ trợ.

Tạo Cơ sở dữ liệu Kiểm tra

Bạn có thể tạo một bảng mới trong cơ sở dữ liệu hiện có. Để làm như vậy, hãy tìm cơ sở dữ liệu thích hợp bằng cách liệt kê tất cả các phiên bản hiện có với:

  HIỂN THỊ DỮ LIỆU;  

danh sách xem cơ sở dữ liệu MySQL

Ngoài ra, bạn có thể tạo một cơ sở dữ liệu mới bằng cách nhập lệnh sau:

  TẠO CƠ SỞ DỮ LIỆU NẾU KHÔNG TỒN TẠI testdata;  

Tạo cơ sở dữ liệu MySQL từ terminal

Để bắt đầu làm việc trong cơ sở dữ liệu testdata mới, hãy sử dụng:

  SỬ DỤNG testdata;  

Thêm bảng và dữ liệu

Khi ở trong cơ sở dữ liệu, hãy thêm một bảng với dữ liệu bên dưới bằng lệnh sau:

  TẠO BẢNG ngày (
id INT PRIMARY KEY AUTO_INCREMENT,
ngày VARCHAR (2) KHÔNG ĐỦ,
tháng VARCHAR (10) KHÔNG ĐỦ,
năm VARCHAR (4) KHÔNG ĐỦ

);

CHÈN VÀO ngày (ngày, tháng, năm)
GIÁ TRỊ ('29', 'Tháng 1', '2011'),
('30', 'Tháng 1', '2011'),
('30', 'Tháng 1', '2011'),
('14', 'Tháng 2,' 2017 '),
('14', 'Tháng 2,' 2018 '),
('23', 'Tháng 3', '2018'),
('23', 'Tháng 3', '2018'),
('23', 'Tháng 3', '2019'),
('29', 'Tháng 10', '2019'),
('29', 'tháng 11', '2019'),
('12', 'tháng 11', '2017'),
('17', 'Tháng 8', '2018'),
(‘05’, ’June’, ’2016’);  

Hiển thị Nội dung của Bảng Ngày

Để xem hiển thị tất cả các ngày bạn đã nhập, được sắp xếp theo năm, hãy nhập:

  CHỌN * TỪ NGÀY ĐẶT HÀNG THEO năm;  

Bảng MySQL được sắp xếp theo ngày

Đầu ra phải hiển thị danh sách các ngày theo thứ tự thích hợp.

Xem Thêm  Thêm điểm đánh dấu vào bản đồ bằng cách sử dụng API Google Maps và jQuery Article - google maps api jquery

Hiển thị các hàng trùng lặp

Để tìm xem có các hàng trùng lặp trong cơ sở dữ liệu thử nghiệm hay không, hãy sử dụng lệnh:

  CHỌN
     ngày, COUNT (ngày),
     tháng, COUNT (tháng),
     năm, COUNT (năm)
TỪ
     ngày
NHÓM THEO
     ngày,
     tháng,
     năm
ĐANG CÓ
     COUNT (ngày) & gt; 1
     VÀ COUNT (tháng) & gt; 1
     VÀ COUNT (năm) & gt; 1;  

Hệ thống sẽ hiển thị bất kỳ giá trị nào trùng lặp. Trong trường hợp này, bạn sẽ thấy:

Phản hồi của MySQL với các bản sao trong cơ sở dữ liệu.

Định dạng này hoạt động để chọn nhiều cột. Nếu bạn có một cột có số nhận dạng duy nhất, chẳng hạn như địa chỉ email trên danh sách liên hệ hoặc một cột ngày tháng, bạn chỉ cần chọn từ một cột đó.

Lưu ý: Tìm hiểu về các cách khác để tìm các hàng trùng lặp trong MySQL .

Xóa các hàng trùng lặp

Trước khi sử dụng bất kỳ phương pháp nào được đề cập bên dưới, hãy nhớ rằng bạn cần phải làm việc trong cơ sở dữ liệu hiện có. Chúng tôi sẽ sử dụng cơ sở dữ liệu mẫu của mình:

  SỬ DỤNG testdata;  

Tùy chọn 1: Xóa các hàng trùng lặp bằng INNER JOIN

Để xóa các hàng trùng lặp trong bảng MySQL thử nghiệm của chúng tôi, hãy sử dụng MySQL JOINS và nhập thông tin sau:

  xóa t1 TỪ ngày t1
INNER JOIN ngày t2
Ở ĐÂU
    t1.id & lt; t2.id VÀ
    t1.day = t2.day VÀ
    t1.month = t2.month AND
    t1.year = t2.year;  

ví dụ về xóa các hàng MySQL trùng lặp

Bạn cũng có thể sử dụng lệnh từ Hiển thị trùng lặp Hàng để xác minh việc xóa.

Lưu ý: Nếu bạn có một số nhận dạng cột duy nhất, bạn có thể thay thế nó cho tháng , ngày năm < / strong> mã nhận dạng cột, bỏ qua toán tử . Điều này được thiết kế để giúp bạn xóa các hàng có nhiều cột giống nhau.

Tùy chọn 2: Xóa các hàng trùng lặp bằng bảng trung gian

Bạn có thể tạo bảng trung gian và sử dụng nó để xóa các hàng trùng lặp. Điều này được thực hiện bằng cách chỉ chuyển các hàng duy nhất sang bảng mới tạo và xóa hàng gốc (với các hàng trùng lặp còn lại).

Để làm như vậy, hãy làm theo hướng dẫn bên dưới.

1. Tạo một bảng trung gian có cùng cấu trúc với bảng nguồn và chuyển các hàng duy nhất có trong nguồn:

  TẠO BẢNG [copy_of_source] CHỌN DISTINCT [cột] TỪ [source_table];  

Ví dụ: để tạo bản sao cấu trúc của bảng mẫu ngày , lệnh là:

  TẠO BẢNG copy_of_dates CHỌN id DISTINCT, ngày, tháng, năm TỪ ngày;  

lệnh tạo bảng trùng lặp trong MySQL

2. Sau khi hoàn tất, bạn có thể xóa bảng nguồn bằng lệnh drop và đổi tên bảng mới:

  BẢNG HIỆU QUẢ [source_table];  
  BẢNG THAY THẾ [copy_of_source] RENAME TO [source_table];  

Ví dụ:

  Ngày trong BẢNG DỪA;  
  ALTER TABLE copy_of_dates RENAME TO ngày;  

loại bỏ các hàng MySQL trùng lặp bằng cách sao chép bảng và loại bỏ nguồn

Tùy chọn 3: Xóa các hàng trùng lặp bằng ROW_NUMBER ()

Quan trọng: Phương pháp này chỉ khả dụng cho MySQL phiên bản 8.02 trở lên. Kiểm tra phiên bản MySQL trước khi thử phương pháp này.

Xem Thêm  'Div' trong HTML là gì? - div trong html có nghĩa là gì

Một cách khác để xóa các hàng trùng lặp là sử dụng hàm ROW_NUMBER () .

  CHỌN *. ROW_NUMBER () Qua (PARTITION BY [column] ORDER BY [column]) với tư cách là [row_number_name];  

Do đó, lệnh cho bảng mẫu của chúng tôi sẽ là:

  CHỌN *. ROW_NUMBER () Trên (PARTITION BY id ORDER BY id) dưới dạng row_number;  

Kết quả bao gồm cột row_number . Dữ liệu được phân vùng theo id và trong mỗi phân vùng có các số hàng duy nhất. Các giá trị duy nhất được gắn nhãn với số hàng 1 , trong khi các giá trị trùng lặp là 2 , 3 , v.v.

Do đó, để xóa các hàng trùng lặp, bạn cần xóa mọi thứ ngoại trừ những hàng được đánh dấu bằng 1. Điều này được thực hiện bằng cách chạy truy vấn DELETE với < mã> row_number làm bộ lọc.

Để xóa các hàng trùng lặp, hãy chạy:

  XÓA khỏi [tên_bảng] WHERE row_number & gt; 1;  

Trong bảng ngày tháng trong ví dụ của chúng tôi, lệnh sẽ là:

  XÓA khỏi ngày WHERE row_number & gt; 1;  

Kết quả đầu ra sẽ cho bạn biết có bao nhiêu hàng đã bị ảnh hưởng, tức là có bao nhiêu hàng trùng lặp đã bị xóa.

Bạn có thể xác minh rằng không có hàng nào trùng lặp bằng cách chạy:

  CHỌN * TỪ [tên_bảng];  

Ví dụ:

  CHỌN * TỪ ngày tháng;  

Lưu ý: Cân nhắc sử dụng công cụ tối ưu hóa truy vấn SQL để tìm cách tốt nhất để thực thi truy vấn và cải thiện hiệu suất.

Kết luận

Giờ đây, bạn có thể xóa các hàng trùng lặp trong MySQL và cải thiện hiệu suất cơ sở dữ liệu của mình . Hãy nhớ rằng, các triển khai mới của chế độ nghiêm ngặt MySQL đã giới hạn chức năng của các chức năng được yêu cầu.


Xem thêm những thông tin liên quan đến chủ đề mysql xóa một hàng

PHP#5 – MySQL#1 database – tạo bảng

alt

  • Tác giả: PHP & MySQL
  • Ngày đăng: 2021-12-07
  • Đánh giá: 4 ⭐ ( 7336 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: PHP5 – MySQL1 database – tạo bảng

Xóa bảng trong MySQL

  • Tác giả: vietjack.com
  • Đánh giá: 3 ⭐ ( 4758 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Xóa bảng trong MySQL – Học MySQL cơ bản đến nâng cao bắt đầu từ MySQL và PHP, Cơ sở dữ liệu, Cú pháp kết hợp MySQL và PHP, Mệnh đề WHERE, Lệnh DELETE, Truy vấn INSERT, Truy vấn UPDATE, Ràng buộc (Constraint), Truy vấn DROP, Mệnh đề ORDER BY, Mệnh đề GROUP BY, Hàm xử lý, Sử dụng JOIN, Giá trị NULL, Transaction, Sử dụng Sequence, Nhập – Xuất cơ sở dữ liệu, Phương thức Backup và Recovery, Regexp, SQL Injection và cách sử dụng trong PHP theo các bước cơ bản.

Câu lệnh DELETE trong MySQL

  • Tác giả: viettuts.vn
  • Đánh giá: 4 ⭐ ( 7760 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Câu lệnh DELETE trong MySQL được sử dụng để xóa các bản ghi hiện có từ một bảng. Cú pháp DELETE FROM table_name WHERE [condition];

Tổng quan về câu lệnh xóa SQL

  • Tác giả: helpex.vn
  • Đánh giá: 4 ⭐ ( 4485 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài viết này về SQL Delete là một phần của loạt bài cần thiết về SQL về các câu lệnh, hàm và hoạt động chính trong SQL Server. Để xóa một hàng khỏi bảng được thực hiện thông qua Ngôn ngữ…

Bài MySQL 12: Cách xóa một bảng trong MySQL

  • Tác giả: vietpro.net.vn
  • Đánh giá: 5 ⭐ ( 4496 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Cách xóa một bảng trong MySQL đang tồn tại ta dùng lệnh lDROP TABLE. Nhưng hãy cẩn thận khi drop table mysql vì nếu xóa đi thì sẽ mất toàn bộ dữ liệu.

Hướng dẫn cách viết câu lệnh DELETE trong MySQL có ví dụ minh họa

  • Tác giả: gitiho.com
  • Đánh giá: 4 ⭐ ( 7287 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết này Gitiho sẽ hướng dẫn cách viết câu lệnh DELETE trong MySQL có ví dụ minh họa. Lệnh này dùng để xóa các dòng không cần thiết trong bảng

Hướng dẫn học PHP

  • Tác giả: hocwebchuan.com
  • Đánh giá: 5 ⭐ ( 1243 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: MySQL delete, xóa dữ liệu với câu lệnh MySQL đơn giản.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình