SQL 제한 조합 세트
-
21-12-2019 - |
문제
나는 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
. 제휴하지 않습니다 StackOverflow