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

xóa các mục nhập trùng lặp trong bảng

Một cách để thực hiện việc này là tham gia bảng trên một truy vấn con bằng cách sử dụng LEFT JOIN . Truy vấn con nhận ID thấp nhất cho mọi UID . Khi một bản ghi không khớp trên truy vấn con, điều đó chỉ có nghĩa là nó không có bản ghi phù hợp và có thể bị xóa một cách an toàn.

DELETE  a
FROM    TableName a
        LEFT JOIN
        (
            SELECT  uid, MIN(ID) min_ID
            FROM    TableName
            GROUP   BY uid
        ) b ON  a.uid = b.uid AND
                a.ID = b.min_ID
WHERE   b.uid IS NULL

Tuy nhiên, nếu các bản ghi của UID có thể có tên khác, khi đó bạn cần bao gồm name trên nhóm group by mệnh đề hoặc chỉ uid duy nhất với ID thấp nhất sẽ vẫn còn.

DELETE  a
FROM    TableName a
        LEFT JOIN
        (
            SELECT  uid, MIN(ID) min_ID, name
            FROM    TableName
            GROUP   BY uid, name
        ) b ON  a.uid = b.uid AND
                a.ID = b.min_ID AND
                a.name = b.name
WHERE   b.uid IS NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Vị trí của các bảng cơ sở dữ liệu - MySQL - Windows XP

  2. CHỌN COUNT trong mối quan hệ một-nhiều

  3. CakePHP 3 - Phân tích cú pháp ngày với LocalStringFormat để sửa định dạng SQL và xác thực chính xác

  4. Cách tạo menu thả xuống

  5. Opencart 1.5.1.3 hiển thị giá đặc biệt với ngày bắt đầu và ngày kết thúc trên trang hiển thị sản phẩm