programing

열을 결합하여 고유 키를 생성하는지 여부를 확인하는 쿼리

bestprogram 2023. 7. 21. 21:48

열을 결합하여 고유 키를 생성하는지 여부를 확인하는 쿼리

Oracle에서 테이블에 있는 세 개의 열 집합이 고유한 키를 구성하고 1:1 관계에서 사용할 수 있는지 확인하려고 합니다.

이 쿼리를 실행할 때 키가 고유한 조합이면count> 1, 맞습니까?

select count(*) from my_table t    
group by t.a, t.b, t.c

이러한 결정을 내릴 수 있는 더 나은/대체 방법이 있습니까?

사용HAVING중복 항목을 쉽게 식별할 수 있는 절입니다.

select t.a, t.b, t.c, count(1) 
from my_table t    
group by t.a, t.b, t.c 
having count(1) > 1;

테이블에 상당한 양의 데이터가 있는 경우에는 보다 쉽게 수행할 수 있습니다.

SELECT t.a, t.b, t.c, count(*)
  FROM my_table t
 GROUP BY t.a, t.b, t.c
HAVING COUNT(*) > 1

이 쿼리가 0개의 행을 반환하는 경우 세 개의 열은 (현재) 고유합니다.해당 쿼리가 하나 이상의 행을 반환하는 경우 중복되는 값을 알 수 있습니다.

물론 세 개의 열이 현재 고유하다는 것을 알게 되면 이러한 사실을 활용하려는 경우 고유한 제약 조건을 생성하고자 할 것입니다.

언급URL : https://stackoverflow.com/questions/10837396/query-to-determine-if-columns-combine-to-create-a-unique-key