문제

나는 A, B, C가있는 테이블을 가지고 있으며, {b, c} {b, c}을 갖는 레코드의 모든 조합을 얻고 싶습니다. 이는 B 값과 C 값이 하나의 세트에서 한 번만 나타납니다.

어떤 아이디어를 얻는 방법이 있습니까?출력이 단일 행에 하나의 조합을 포함 해야하는 경우 문제가되지 않습니다.

여기를 지우려면 예제가 있습니다.

  • 1,1,0
  • 6,1,1
  • 1,1,2
  • 3,2,0
  • 5,2,1
  • 1,2,3

하나의 가능한 조합은 {1,1,0}, {1,2,3}이고 {6,1,1}, {5,2,1}은 C 열 값 '1이므로'고유하지 않습니다.내가 얻고 싶은 것은 그러한 출력이다 :

1,1,0,1,2,3

6,1,1,1,2,3
.

iOW 출력은 B, C 값을 고유 한 B, C 값을 갖는 n- 튜플이 될 것입니다.

도움이 되었습니까?

해결책

나는 당신이 자체 가입의 이상한 수단을 원한다고 생각합니다 :

select t1.*, t2.*
from table t1 join
     table t2
     on t1.b <> t2.b and t1.c <> t2.c;
.

b 열이 고유 한 값이고 c 열이 뚜렷한 값이있는 테이블에서 모든 쌍을 반환합니다.

다른 팁

이것은 그룹별이 무엇인지입니다.모든 레코드를 그룹의 동일한 값과 단일 행으로 결합합니다.

select B, C
from my_table
group by B, C
.

@linger의 솔루션의 값만 사용하기를 원한다면, 해당 레코드에서 발생하는 C 조합이있는 레코드의 모든 필드만을 원할 경우, 사용하지만, 다른 경우에는 솔루션의 값만을 원할 경우

SELECT MAX(A),B,C FROM T
GROUP BY B,C
HAVING COUNT(*) = 1
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top