20.04.2020 17:10

Поиск дубликатов в MySQL/MariaDB

Поиск дубликатов в MySQL/MariaDB

В этой статье я объясню, как найти дубликаты в MySQL/MariaDB. Дублирующие записи могут появляться из-за неправильной структуры базы данных. Вы должны использовать индекс UNIQUE, чтобы предотвратить добавление повторяющихся записей. Давайте рассмотрим пример того, как узнать, сколько повторяющихся записей в конкретной таблице.

Сначала создадим простую таблицу `emails`:

--
-- Table structure for table `emails`
--
CREATE TABLE IF NOT EXISTS `emails` (
	`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
	`email` VARCHAR(255) NOT NULL,
	PRIMARY KEY (`id`)
);

--
-- Dumping data for table `emails`
--
INSERT INTO `emails` (`email`)
VALUES
	('example@gmail.com'),
	('example2@gmail.com'),
	('example3@gmail.com'),
	('example4@gmail.com'),
	('example@gmail.com'),
	('example@gmail.com'),
	('example@gmail.com'),
	('example2@gmail.com'),
	('example2@gmail.com'),
	('example3@gmail.com');

Теперь выполните следующий запрос для выявления дубликатов:

SELECT `email`, COUNT(`email`) AS countEmail
FROM `emails`
GROUP BY `email`
HAVING countEmail > 1
ORDER BY countEmail DESC;

--
--	[output]
--
--	email				countEmail
--	example@gmail.com	4
--	example2@gmail.com	3
--	example3@gmail.com	2

Этот запрос вычисляет количество записей для указанного столбца, используя функцию COUNT() в сочетании с GROUP BY. Далее идет фильтрация записей с использованием HAVING. Результат можно отсортировать в нужном порядке, используя ORDER BY.

Другие статьи