sql >> Databáze >  >> RDS >> Mysql

Odstraňte duplicitní řádky s počtem větším než 1 v mysql

V MySQL nemůžete vybírat z tabulky, ze které současně odstraňujete. Ale pomocí dočasné tabulky můžete tento problém překonat

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

nebo použijte join místo

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. Jak nastavit proměnnou z SQL dotazu?

  2. Použijte spojení nebo spojení – co je rychlejší

  3. Zobrazit rozevírací seznam v HTML s PHP

  4. Význam bajtů výpisu (systimestamp) Oracle