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 : thả hàng trong mysql

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 cách xóa 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 Kiểm tra

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 thông tin 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ẽ thay đổi 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 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 KHÓA CHÍNH TỰ ĐỘNG 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’, ‘March’, ’2018’),
(‘23’, ‘March’, ’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  Các câu hỏi đề mở môn triết học và hướng dẫn trả lời - môn kiến trúc máy tính

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 bị 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 có thể 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 danh 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 được 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 ĐẾN [source_table];  

Ví dụ:

  DROP TABLE ngày;  
  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  javatpoint - enum java 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 [row_number_name];  

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

  CHỌN *. ROW_NUMBER () Over (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ó 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ủ đề thả hàng trong mysql

TRUY VẤN TRONG MYSQL

alt

  • Tác giả: Lê Anh Tú
  • Ngày đăng: 2021-04-08
  • Đánh giá: 4 ⭐ ( 7430 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: TRUY VẤN MYSQL, TRUY VẤN NHIỀU BẢNG, INNER , LEFT , RIGHT, FULL JOIN

LỆNH TÌM VÀ THAY THẾ NỘI DUNG BẰNG MYSQL

  • Tác giả: hanaweb.vn
  • Đánh giá: 4 ⭐ ( 8908 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Có khi nào bạn cần chỉnh sửa nội dung hàng loạt trên Website chưa? Chẳng hạn bạn cần thay 1 số điện thoại trong 5.000 – 10.000 bài viết, hoặc thay địa chỉ,

Tất tần tật về SQL – SQL là gì? Sử dụng như thế nào?

  • Tác giả: intech.vietnamworks.com
  • Đánh giá: 5 ⭐ ( 9802 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: SQL là loại ngôn ngữ máy tính, giúp cho thao tác lưu trữ và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ. SQL là viết tắt của Structured Query Language là ngôn ngữ truy vấn có cấu trúc. Ứng dụng thực tế của SQL là gì? Cùng tìm hiểu nhé!

Sử dụng ALTER để thả một cột nếu nó tồn tại trong MySQL

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 1599 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Đối với MySQL, không có: Yêu cầu tính năng MySQL . Dù sao thì IF EXISTScho…

Tính toán và xử lí ngày tháng bằng câu lệnh SQL

  • Tác giả: viblo.asia
  • Đánh giá: 4 ⭐ ( 7166 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Vừa qua mình vừa có 1 task liên quan đến việc tính toán và xử lí ngày tháng bằng câu lệnh SQL. Trong quá trình tìm hiểu và thực hiền mình có rút ra 1 chút kinh nghiệm hay hay nên hôm nay muốn chia…

Truy vấn SELECT trong MySQL

  • Tác giả: vietjack.com
  • Đánh giá: 4 ⭐ ( 9520 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Truy vấn SELECT 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.

[MySQL 12] MySQL GROUP BY và HAVING

  • Tác giả: www.codelean.vn
  • Đánh giá: 5 ⭐ ( 1531 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: CodeLean.vn là nơi chia sẻ kiến thức của những người học, làm và dạy trong lĩnh vực công nghệ thông tin.

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

By ads_php