PostgreSQL의 다른 테이블 데이터에 기초하여 하나 개의 테이블의 행을 필터링 할 수 없습니다

khajlk :

나는 두 개의 테이블이 tbl1(552 행) 및 tbl2내 PostgreSQL 데이터베이스 (PG 9.5, 64 윈도우)에 동일하지 않은 행 (257 행). 다음과 같은 데이터 (샘플이 여기에 표시)를 포함 TBL1 및 TBL2 표 :

Grp   id   val1   val2   sum
1     1    112    142    5.2
1     2    124    137    6.7
1     3    136    189    6.8
1     4    112    114    9.8
1     5    130    145    6.1
1     6    142    130    7.7

Grp  id    sum
1    1     5.2
1    3     6.8
1    6     7.7

표 1의 각 그룹에 대해, 나는 첫 번째 테이블에서 "ID가"두 번째 테이블의 "ID"와 동일하지 않은 행을 선택하려합니다. 예를 들어, 내 예상 출력은 다음과 같습니다

Grp   id    val1   val2   sum
1     2     124    137    6.7
1     4     112    114    9.8
1     5     130    145    6.1

지금까지이 쿼리를 시도했지만 작동, 빈 출력을 반환하지 않습니다.

SELECT
   a.grp, a.id,
   a.val1, a.val2, a.sum
FROM tbl1 a
WHERE NOT EXISTS (
    SELECT * 
    FROM tbl2 b WHERE b.grp = a.grp AND b.id != a.id
)

이것에 캔 누군가의 도움을 내가 잘못을하고있는 중이 야하는지 설명?

멀리 통과 :

당신이 사용하고 있기 때문에 NOT EXISTS조건을 당신은 필요 b.id = a.id하지 b.id != a.id:

...................
WHERE b.grp = a.grp AND b.id = a.id
...................

추천

출처http://10.200.1.11:23101/article/api/json?id=391628&siteId=1