두 테이블 A & B가 있는데 다음과 같은 쿼리를 갖고 싶습니다. 두 테이블이 동일한 경우 TRUE 만 반환합니다. A의 모든 라인이 B &에 있음을 의미합니다. 그 반대의 경우도 마찬가지 상관없이 선 순서)두 테이블 간의 동일성에 대한 PostgreSQL 쿼리
나는 제외 키워드를 사용할 수 있지만 그것은 당신의 도움을 많은 경우에
감사 작업을 나던.
두 테이블 A & B가 있는데 다음과 같은 쿼리를 갖고 싶습니다. 두 테이블이 동일한 경우 TRUE 만 반환합니다. A의 모든 라인이 B &에 있음을 의미합니다. 그 반대의 경우도 마찬가지 상관없이 선 순서)두 테이블 간의 동일성에 대한 PostgreSQL 쿼리
나는 제외 키워드를 사용할 수 있지만 그것은 당신의 도움을 많은 경우에
감사 작업을 나던.
select * from tablea except all select * from tableb
은 tableb에없는 모든 행을 tablea에서 반환합니다.
것은 그것을 TABLEA에 존재하지 않는 다른 방법 TableB의에서 주위
select * from tableb except all select * from tablea
반환 모든 행을하고.
그래서, 지금 우리는 할 수 있습니다
select count(*) from (select * from tablea except all select * from tableb) x;
는 TABLEA에서 "나쁜"행 번호를, 및하기 :
select count(*) from (select * from tableb except all select * from tablea) x;
이 TableB의에서 "나쁜"행의 수를 얻을 수 있습니다. ,
select 0 = (select count(*) from (select * from tablea except all select * from tableb) x) + (select count(*) from (select * from tableb except all select * from tablea) x);
감사합니다 !! + 연산자의 위치를 제외하고는 정상적으로 작동합니다. – adam
문제가 해결되면 대답을 수락해야합니다. –
당신이 무엇을 시도했다 게시하시기 바랍니다 : 모두 카운트가 0 경우
테이블은 동일하고도 카운트가 0보다 작을 수 있기 때문에 개수의 합이 0이면, 우리는 테스트 할 수 있습니다 테이블 A와 B의 열 목록과 함께. –
데이터 세트의 크기는 얼마나됩니까? EXCEPT로 어떤 문제가 발생합니까? –
데이터 집합이 매우 작고 (20 행 미만) 쿼리는 프로덕션 환경이 아닌 디버그 용으로 만 사용됩니다. – adam