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

Xóa các hàng trùng lặp có số lượng lớn hơn 1 trong mysql

Trong MySQL, bạn không thể chọn từ bảng bạn đang xóa cùng một lúc. Nhưng với bảng tạm thời, bạn có thể khắc phục được vấn đề này

DELETE FROM `users_acl` 
WHERE userID IN
(
    SELECT * FROM
    (
       SELECT userID
       FROM `users_acl`
       GROUP BY userID 
       HAVING COUNT(userID) > 1
       AND SUM(`acl` = 4) > 0
   ) tmp
);

hoặc sử dụng join thay vào đó

DELETE u
FROM `users_acl` u
JOIN 
(
    SELECT userID
    FROM `users_acl`
    GROUP BY userID 
    HAVING COUNT(userID) > 1
    AND SUM(`acl` = 4) > 0
) tmp on tmp.userID = u.userID


  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ỗi ngoại lệ Java - Sqlite readyStatement.setBlob

  2. Python Mysql, các lệnh không đồng bộ; bạn không thể chạy lệnh này bây giờ

  3. Tôi có thể tạo chế độ xem với tham số trong MySQL không?

  4. Chỉ định nhiều mối quan hệ một-nhiều giữa các bảng trong Hibernate

  5. Cách làm trống tất cả các hàng từ tất cả các bảng trong mysql (trong sql)