Как найти пары записей (например, сотрудников) с одинаковым значением в определённом поле (например, с одинаковой зарплатой)?
Уровень: Middle
Ответ
Можно сделать self JOIN таблицы на саму себя по этому полю, отфильтровав идентичные пары. Например: SELECT e1.name, e2.name FROM Employees e1 JOIN Employees e2 ON e1.salary = e2.salary AND e1.id < e2.id. Это вернет все пары разных сотрудников с одинаковой зарплатой. Здесь условие e1.id < e2.id используется, чтобы каждая пара не повторялась дважды в обратном порядке. Альтернатива: сначала получить повторяющиеся значения (через GROUP BY salary HAVING COUNT(*)>1), а затем выбрать всех сотрудников, у которых salary равна одному из таких значений.