[SQL] 어떻게 두 개의 테이블을 조인 할 수 있지만 일치하지 않는 행을 반환?
SQL어떻게 두 개의 테이블을 조인 할 수 있지만 일치하지 않는 행을 반환?
I는 다음과 같이 두 개의 테이블이 있습니다
T1: ID | Date | Hour | Interval
T2: ID | Date | Hour
나는 기본적으로 자신의 아이디, 날짜 및 시간과 일치 할 때이 테이블에 가입해야합니다. 그러나, 나는 단지 표 2의 결과와 일치하지 않는 표 1의 결과를 반환합니다.
나는이 간단한 것 알지만이 붙어 곳 (복수의 간격은 주어진 시간 동안가) 표 2와 일치 표 1에서 여러 행이 있다는 사실이다. 나는 그들이 표 2에 같은 시간 이내에 해당하지 않는 한 너무 오래 이러한 모든 간격을 반환해야합니다.
예 데이터 :
T1: 1 | 1/1/2011 | 1 | 1
1 | 1/1/2011 | 1 | 2
1 | 1/1/2011 | 2 | 1
1 | 1/1/2011 | 2 | 2
T2: 1 | 1/1/2011 | 1
이에 대한 나의 예상 된 결과 세트는 T1에서 마지막 두 행이 될 것입니다. 바른 길에 캔 누구 포인트 나?
해결법
-
==============================
1.
SELECT T1.* FROM T1 WHERE NOT EXISTS(SELECT NULL FROM T2 WHERE T1.ID = T2.ID AND T1.Date = T2.Date AND T1.Hour = T2.Hour)
그것은 또한 LEFT와 함께 할 수있는 가입 :
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID AND T1.Date = T2.Date AND T1.Hour = T2.Hour WHERE T2.ID IS NULL
-
==============================
2.왼쪽이 조인을 사용하고 NULL이 아닌 T2의 열이 행을 필터링 :
왼쪽이 조인을 사용하고 NULL이 아닌 T2의 열이 행을 필터링 :
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID AND T1.Date = T2.Date AND T1.Hour = T2.Hour WHERE T2.ID IS NULL
from https://stackoverflow.com/questions/6613708/how-can-i-join-two-tables-but-only-return-rows-that-dont-match by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 그것은 모니터링하고 액세스 MDB에 의해 만들어진 실제 쿼리를 기록 할 수 있습니까? (0) | 2020.06.30 |
---|---|
[SQL] 나는 특정 테이블에 MySQL 사용자를 제한 할 수있는 방법 (0) | 2020.06.30 |
[SQL] Symfony2 및 교리 : 만들기 사용자 정의 SQL-쿼리 (0) | 2020.06.30 |
[SQL] MySQL의에서 사용할 수있는 병합 문입니다 (0) | 2020.06.30 |
[SQL] 다른 부분에 하나는 유사하다 열 비교 (0) | 2020.06.30 |