Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Loại bỏ các mục nhập trùng lặp trong bảng MySQL

Bạn có thể thực hiện việc này khá dễ dàng bằng cách chọn truy vấn đó vào một bảng khác, sau đó đổi tên nó để thay thế cho bảng gốc.

CREATE TABLE `table2` (
  `name` varchar(255), 
  `email` varchar(255), 
  UNIQUE KEY `email` (`email`));
INSERT INTO `table2` SELECT `name`, DISTINCT(`email`) FROM `table`;
RENAME TABLE `table` TO `table1`;
RENAME TABLE `table2` TO `table`;

Lưu ý rằng CREATE này nên được điều chỉnh theo định dạng bảng thực tế của bạn. Tôi đã thêm khóa duy nhất vào trường email như một gợi ý về cách bạn sẽ ngăn chặn các bản sao ngay từ đầu.

Ngoài ra, bạn có thể lặp lại điều này

DELETE FROM `table` 
WHERE `email` IN (
  SELECT `email` FROM `table` GROUP BY `email` HAVING count(*) > 1
) LIMIT 1

Điều này sẽ xóa một bản ghi trùng lặp cho mỗi cuộc gọi. Tầm quan trọng của giới hạn là không loại bỏ cả hai hàng đối với bất kỳ bản sao nào



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kết nối ECONNREFUSED - nút js, sql

  2. Làm cách nào để di chuyển cấu trúc cơ sở dữ liệu MySQL mới từ nhà phát triển sang trang web sản xuất bằng dòng lệnh?

  3. Truy vấn để tìm ra thứ Bảy thứ hai của mỗi tháng trong năm

  4. cách kết nối với cơ sở dữ liệu bên trong vagrant

  5. utf8 bị cắt xén khi nhập vào mysql