sql >> Database >  >> RDS >> Mysql

Verwijder dubbele rijen waarvan het aantal groter is dan 1 in mysql

In MySQL kunt u niet selecteren uit een tabel waaruit u tegelijkertijd verwijdert. Maar met een tijdelijke tabel kun je dit probleem oplossen

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
);

of gebruik een join in plaats daarvan

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. Hoe u de huidige datum en tijd in MySQL kunt krijgen

  2. Spring Boot CRUD-voorbeeld met MySQL

  3. Bij dubbele sleutelupdate hetzelfde als invoegen

  4. Transformationele verhalen op de MariaDB OpenWorks-conferentie