sql >> Database teknologi >  >> RDS >> Mysql

Slet dublerede rækker med et antal større end 1 i mysql

I MySQL kan du ikke vælge fra en tabel, du sletter fra på samme tid. Men med en midlertidig tabel kan du overvinde dette problem

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

eller brug en join i stedet

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. Sådan håndteres fejl i SQL Server-indlejrede transaktioner

  2. SQLite datatyper

  3. CEILING() Eksempler i SQL Server

  4. Brug MySQL relationelle databaser på Fedora 12