T-SQL | Проверка уникальности с помощью GROUP BY |
Например, есть запрос:
SELECT t1.ID AS ID1, t2.ID AS ID2, t1.Name AS Name1, t2.Name AS Name2 FROM table1 t1 INNER JOIN table2 t2 ON t1.ID = t2.ID
Нужно проверить не задублировались ли в результате запроса записи по полям ID1 и ID2.
Используем аггрегирующую функцию COUNT и надстраиваем проверочный запрос:
SELECT COUNT(*) FROM ( SELECT t1.ID AS ID1, t2.ID AS ID2, t1.Name AS Name1, t2.Name AS Name2 FROM table1 t1 INNER JOIN table2 t2 ON t1.ID = t2.ID ) q_check GROUP BY q_check.ID1, q_check.ID2 HAVING COUNT(*) > 1
Или, для вывода конкретных ID1, ID2 и количества записей:
SELECT q_check.ID1, q_check.ID2, COUNT(*) FROM ( SELECT t1.ID AS ID1, t2.ID AS ID2, t1.Name AS Name1, t2.Name AS Name2 FROM table1 t1 INNER JOIN table2 t2 ON t1.ID = t2.ID ) q_check GROUP BY q_check.ID1, q_check.ID2 HAVING COUNT(*) > 1
|