Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Usuń zduplikowane wiersze o liczbie większej niż 1 w mysql

W MySQL nie możesz jednocześnie wybierać z tabeli, z której usuwasz. Ale z tymczasowym stołem możesz rozwiązać ten 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
);

lub użyj join zamiast tego

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. mysql naprawić nieprawidłowe daty

  2. MySQL - zliczaj aktywnych/nieaktywnych/zbanowanych użytkowników i wybieraj użytkowników na podstawie statusu w jednym zapytaniu

  3. Jak działa funkcja REGEX_REPLACE() w MySQL

  4. Sprawdź, czy wiersz istnieje w bazie danych przed wstawieniem

  5. Cronjob co minutę