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


 



© 2018 | Анна Петросян | pashelp@yandex.ru