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

изтриване на дублиращи се записи в таблицата

Един от начините да направите това е като присъедините таблицата към подзаявка с помощта на LEFT JOIN . Подзаявката получава най-ниския ID за всеки UID . Когато даден запис няма съвпадение в подзаявката, това просто означава, че няма съвпадащ запис и може да бъде безопасно изтрит.

DELETE  a
FROM    TableName a
        LEFT JOIN
        (
            SELECT  uid, MIN(ID) min_ID
            FROM    TableName
            GROUP   BY uid
        ) b ON  a.uid = b.uid AND
                a.ID = b.min_ID
WHERE   b.uid IS NULL

Въпреки това, ако записите на UID може да има различно име, тогава трябва да включите name в group by клауза или само уникален uid с най-ниския ID ще остане.

DELETE  a
FROM    TableName a
        LEFT JOIN
        (
            SELECT  uid, MIN(ID) min_ID, name
            FROM    TableName
            GROUP   BY uid, name
        ) b ON  a.uid = b.uid AND
                a.ID = b.min_ID AND
                a.name = b.name
WHERE   b.uid IS NULL


  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

  2. Въведете текстова стойност въз основа на стойността на опцията за избор, заредена динамично от sql db

  3. Преобразуване на времева марка на поле за дата и час от mysql в php

  4. Какви са разликите между Null, Zero и Blank в SQL?

  5. Вижте всички ограничения на външния ключ за цялата база данни на MySQL