Mysql
 sql >> база данни >  >> RDS >> Mysql

Изтрийте дублиращи се редове с брой по-голям от 1 в mysql

В MySQL не можете да избирате от таблица, от която изтривате едновременно. Но с временна таблица можете да преодолеете този проблем

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

или използвайте join вместо това

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. опитвайки се да получа броя на месеците

  2. Как да комбинирам почти същия елемент чрез SQL?

  3. Колко UTF-8 текст се побира в текстово поле на MySQL?

  4. индексира битово поле в MYSQL

  5. Запазване на стойностите на текстовото поле дори след опресняване