table
id , value
a , 1
a, 2
a, 3
b, 1
b, 2
b, 4
c, 1
c, 2
c, 3
. ..
이런식으로 테이블에 레코드 값이 있는데요.
쿼리를 짜야하는 문제는 id a가 가지고 있는 value 1,2,3 값을 동일하게 가지고 있는 몰아이디를 찾아야
하는데 -ㅂ- 영 모르곘네요. 고수님들에 많은 조언 부탁 드립니다.
그래서 결과는 c가 나오면 되는데 -ㅂ- 잘 모르겠네요 ㅋㅋ
제가 정말 미숙하나마 서브쿼리를 사용하여
컬럼 a 의 값과 같지 않은 테이블을 제외하는 조건으로 구현하였으나,
서브쿼리로 인해 성능에 대해서는 기대하기 어려울거같습니다.
이 쿼리보다 더 좋은 의견 가지신분들 많을텐데
다른분들 의견도 듣고싶습니다.(원래 이러면서 배우는거 아니겠습니까 ^^)
table test5데이터는 이렇습니다
id | value ----------- a | 1 a | 2 a | 3 b | 1 b | 1 b | 2 b | 4 c | 1 c | 2 c | 3 d | 1 d | 2 d | 3 e | 1 e | 3 e | 5
select id, value from test5 except select c.id, d.value from ( select id, value from test5 except select b.id, b.value from ( select id, value from test5 where id = 'a') as a join test5 b on a.value = b.value ) as c left outer join test5 d on c.id = d.id order by 1,2
아 정말 감사합니다. 대단한데요 ㅋㅋㅋ
우선 원하는값이 출력되는것만으로도 -ㅂ- 완전 놀랐습니다.
ㅋㅋㅋ 기발하네요. 유용하게 사용하겠습니다!!
배열을 이용하면 아주 쉽게 해 볼 수 있습니다.
데이타 량에 따라 성능은 어떨지 모르겠네요
select id from
(select id, sort(uniq(array_agg(value))) as arr from table
group by id) as t
where arr = (select sort(uniq(array_agg(value))) from table
where id = 'a');
답변주셔서 감사합니다. ^ ^ 한번도 안써본 방법이네요 ㅋ