sql >> Databasteknik >  >> RDS >> Mysql

Ta bort dubbletter av rader som har fler än 1 i mysql

I MySQL kan du inte välja från en tabell du tar bort från samtidigt. Men med en temptabell kan du övervinna detta 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 använd en join istället

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. Vänster koppling PÅ-villkor OCH annan villkorssyntax i Doctrine

  2. JSON_REPLACE() – Ersätt värden i ett JSON-dokument i MySQL

  3. mysql lagrad procedur:ut parameter

  4. Hur kan jag se om jag har oengagerat arbete i en Oracle-transaktion?