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

Cách xóa các bản sao trong bảng SQL dựa trên nhiều trường

Bạn sẽ có thể thực hiện một truy vấn con tương quan để xóa dữ liệu. Tìm tất cả các hàng trùng lặp và xóa tất cả trừ hàng có id nhỏ nhất. Đối với MYSQL, một phép nối bên trong (chức năng tương đương với EXISTS) cần được sử dụng, như sau:

delete games from games inner join 
    (select  min(id) minid, date, time,
             hometeam_id, awayteam_id, locationcity, locationstate
     from games 
     group by date, time, hometeam_id, 
              awayteam_id, locationcity, locationstate
     having count(1) > 1) as duplicates
   on (duplicates.date = games.date
   and duplicates.time = games.time
   and duplicates.hometeam_id = games.hometeam_id
   and duplicates.awayteam_id = games.awayteam_id
   and duplicates.locationcity = games.locationcity
   and duplicates.locationstate = games.locationstate
   and duplicates.minid <> games.id)

Để kiểm tra, hãy thay thế delete games from games với select * from games . Đừng chỉ chạy xóa trên DB của bạn :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP 5.4 PDO không thể kết nối với MySQL 4.1+ bằng cách sử dụng xác thực không an toàn cũ

  2. Nhận các tham số dễ bị tấn công bởi SQL Injection - PHP

  3. Làm thế nào để thực hiện Mô hình kế thừa trong Cơ sở dữ liệu quan hệ?

  4. Truy vấn MySQL DATETIME DIFF

  5. thêm một cột tạm thời với một giá trị