이런 테이블이 있어요
a_id | b_id
1 | 2
2 | 1
2 | 1
1 | 2
3 | 1
1 | 4
그 경우 1
내가 가지고있는 서로 다른 조합을 좀하고 싶습니다 a_id=1
또는 b_id=1
같은
result
2
3
4
두 개의 열로 그룹화되지만 각 열 쌍에서 동일한 값을 사용합니다 (반대의 경우도 마찬가지). 이것을 처리 할 수있는 방법이 있습니까?
다음을 사용할 수 있습니다 union
.
select b_id as result from t where a_id = 1 union
select a_id from t where b_id = 1;
다른 방법이 있습니다. . . 측면 조이 :
select distinct x.result
from t, lateral
(values (case when a_id = 1 then b_id else a_id end) x(result)
where 1 in (a_id, b_id);
또는 더 직접적인 쿼리 :
select distinct x(case when a_id = 1 then b_id else a_id end) as result
from t
where 1 in (a_id, b_id);
중복을 제거하기 때문에는 distinct
거의 모든 방법의 성능을 지배 할 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다