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

Loại bỏ các bản ghi SQL trùng lặp để cho phép một khóa duy nhất

Để trả lời nhận xét của bạn, đây là một truy vấn hoạt động trong MySQL:

delete YourTable
from YourTable
inner join YourTable yt2
on YourTable.product_id = yt2.product_id
and YourTable.id < yt2.id

Điều này sẽ chỉ loại bỏ các hàng trùng lặp. inner join sẽ lọc ra hàng mới nhất cho mỗi sản phẩm, ngay cả khi không có hàng nào khác cho cùng một sản phẩm.

P.S. Nếu bạn cố đặt bí danh cho bảng sau FROM , MySQL yêu cầu bạn chỉ định tên của cơ sở dữ liệu, như:

delete <DatabaseName>.yt
from YourTable yt
inner join YourTable yt2
on yt.product_id = yt2.product_id
and yt.id < yt2.id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chuyển đổi ngày của người chọn ngày thành ngày mysql

  2. MySQL ERROR 502:SELECT * FROM table WHERE uid =1 ORDER BY id DESC LIMIT 0, 100; Phân trang không hoạt động

  3. Nhập tệp SQL 1GO => ERROR 2013 (HY000) tại dòng 23:Mất kết nối với máy chủ MySQL trong khi truy vấn

  4. Cách hiển thị danh sách thả xuống thứ hai dựa trên giá trị thả xuống trước đó bằng cách sử dụng Javascript

  5. Khi tôi chạy chương trình JPA không tạo bảng trong MySQL