-1
구조가 동일한 두 개의 테이블이 있으며 키, 타임 스탬프, 값 및 외래 키가 있습니다.Postgres의 두 테이블 비교
동일한 타임 스탬프, 값 및 외래 키가있는 첫 번째 일치하는 레코드가없는 두 번째 테이블의 모든 레코드를 나열하고 싶습니다.
어떻게하면됩니까? 당신이 시도 할 수
구조가 동일한 두 개의 테이블이 있으며 키, 타임 스탬프, 값 및 외래 키가 있습니다.Postgres의 두 테이블 비교
동일한 타임 스탬프, 값 및 외래 키가있는 첫 번째 일치하는 레코드가없는 두 번째 테이블의 모든 레코드를 나열하고 싶습니다.
어떻게하면됩니까? 당신이 시도 할 수
두 가지 방법, 최초의 "존재"를 사용 :
select a.key,
a.ts,
a.value
from a
where not exists (select 1
from b
where a.key = b.key
and (a.ts != b.ts
or a.value != b.value
or a.fk != b.fk))
;
그리고 "에서"사용 :
select a.key,
a.ts,
a.value
from a
where (a.key, a.ts, a.value) not in (select b.key, b.ts, b.value from b)
;
편집 : 나는 당신이 네 개의 열을 가지고 가능성 매칭 있습니다했습니다 실현 열쇠에. 이를 반영하기 위해 "exists"쿼리를 수정했습니다. 이제 해당 쿼리는 테이블 간의 키가 일치하는지 확인한 다음 다른 세 열 중 하나가 다른지 확인합니다.
답변은 ** 정확한 테이블 정의 **에 따라 달라지며, 이러한 질문에는 반드시 포함해야합니다. 'psql'에서'\ d tbl '을 사용하십시오. 가능한 NULL 값을 고려해야합니다. 또한 귀하의 Postgres 버전을 참조하십시오. –