8
Май

MySQL: Поиск дубликатов в таблице по нескольким полям

Допустим, есть таблица с записями с одинаковыми значениями для нескольких полей и необходимо найти все эти записи. Простой и элегантный способ сделать это через GROUP BY и JOIN таблицы самой с собой.

Например, таблица содержит некоторые записи про сотрудников. Поля FirstName и LastName могут содержать повторяющиеся значения. Нужно выбрать все записи для тех сотрудников, про которых в таблице больше одной записи.

SELECT C.* FROM ( SELECT FirstName, LastName
FROM Employees
GROUP BY FirstName, LastName
HAVING COUNT(*) > 1 ) E
JOIN Employees C
ON C.FirstName = E.FirstName
AND C.LastName = E.LastName[/bash]
 

Поиск дубликатов url alias в ocStore:

SELECT C.* FROM ( SELECT query, keyword
                  FROM oc_url_alias
                  GROUP BY query, keyword
                  HAVING COUNT(*) > 1 ) E
    JOIN oc_url_alias C
        ON C.query = E.query
            AND C.keyword = E.keyword
[/bash]