Как найти повторяющиеся элементы в таблице

В данной статье мы рассмотрим способ поиска повторяющихся элементов в таблице.

Для начала создадим таблицу в нашей БД (для выполнения примеров можно использовать ресурс – http://sqlfiddle.com/):


CREATE TABLE customers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(20),
    last_name VARCHAR(20),
    email VARCHAR(100)
);

И добавим в неё данные:


insert into customers VALUES(1, 'One', 'First', 'test1@mail.com');
insert into customers VALUES(2, 'Two', 'Second', 'test2@mail.com');
insert into customers VALUES(3, 'Three', 'Third', 'test3@mail.com');
insert into customers VALUES(4, 'Four', 'Fourth', 'test4@mail.com');
insert into customers VALUES(5, 'Five', 'First', 'test5@mail.com');

Проверим данные:


select * from customers;

В результате мы видим следующее:

id first_name last_name email
1 One First test1@mail.com
2 Two Second test2@mail.com
3 Three Third test3@mail.com
4 Four Fourth test4@mail.com
5 Five First test5@mail.com

Как мы можем видеть, у клиентов с id 1 и 5 одинаковые фамилии.

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


SELECT 
    last_name
FROM
    customers
GROUP BY last_name
HAVING COUNT(*) > 1;

Результат:

last_name
First

В данной статье мы рассмотрели способ поиска повторяющихся значений в SQL.