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

Xóa các hàng trùng lặp khỏi bảng với phép nối

Nếu bạn muốn xóa thành phố trùng lặp có cùng state_id (bản ghi trùng lặp), bạn có thể làm điều đó bằng cách nhóm chúng theo citystate_id và sử dụng MIN hoặc MAX chức năng:

Trước khi xóa truy vấn, bảng của bạn trông như thế nào

| ID | STATE_ID |       CITY |
------------------------------
|  1 |        1 |   city_one |
|  2 |        1 |   city_two |
|  3 |        1 |   city_one |
|  4 |        1 |   city_two |
|  5 |        2 |   city_one |
|  6 |        3 | city_three |
|  7 |        3 |   city_one |
|  8 |        3 | city_three |
|  9 |        4 |  city_four |
| 10 |        4 |  city_five |

Bạn có thể sử dụng truy vấn sau để xóa các bản ghi trùng lặp:

DELETE city_table 
  FROM city_table
  LEFT JOIN 
  (SELECT MIN(id) AS IDs FROM city_table
   GROUP BY city,state_id
  )A
  ON city_table.ID = A.IDs
  WHERE A.ids IS NULL;

Sau khi áp dụng truy vấn trên, bảng của bạn sẽ trông giống như sau:

| ID | STATE_ID |       CITY |
------------------------------
|  1 |        1 |   city_one |
|  2 |        1 |   city_two |
|  5 |        2 |   city_one |
|  6 |        3 | city_three |
|  7 |        3 |   city_one |
|  9 |        4 |  city_four |
| 10 |        4 |  city_five |

Xem SQLFiddle này

Để biết thêm, hãy xem DELETE Cú pháp của MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để sử dụng PHP đúng cách để mã hóa đối tượng MySQL thành JSON?

  2. LIMIT từ khóa trên MySQL với câu lệnh chuẩn bị

  3. bỏ qua sao chép vào bảng tmp trên đĩa mysql

  4. MySQL - số hàng trong tập bản ghi?

  5. Truy vấn SQL để lấy tổng phụ của một số hàng