[SQL] SQL과 타의 추종을 불허하는 기록을 찾기
SQLSQL과 타의 추종을 불허하는 기록을 찾기
나는 다른 테이블에 일치하는 레코드가없는 기록을 찾기 위해 쓰기 a를 쿼리를 시도하고있다.
예를 들어, 나는 누구의 구조를 다음과 같이 뭔가를 보이는 두 개의 테이블이 있습니다
Table1 State | Product | Distributor | other fields CA | P1 | A | xxxx OR | P1 | A | xxxx OR | P1 | B | xxxx OR | P1 | X | xxxx WA | P1 | X | xxxx VA | P2 | A | xxxx Table2 State | Product | Version | other fields CA | P1 | 1.0 | xxxx OR | P1 | 1.5 | xxxx WA | P1 | 1.0 | xxxx VA | P2 | 1.2 | xxxx
(주 / 제품 / 배포자가 함께 표 1. 국가에 대한 키를 형성 / 제품 표 2의 키입니다)
나는 대리점 X를 사용하지 않는 모든 주 / 제품 / 버전 조합을 찾으려면 (이 예제의 결과는 CA-P1-1.0 및 VA-P2-1.2되도록합니다.)
쿼리에 대한 어떤 제안이 작업을 수행하려면?
해결법
-
==============================
1.
SELECT * FROM Table2 T2 WHERE NOT EXISTS (SELECT * FROM Table1 T1 WHERE T1.State = T2.State AND T1.Product = T2.Product AND T1.Distributor = 'X')
이것은 ANSI를 준수해야한다.
-
==============================
2.T-SQL에서 :
T-SQL에서 :
SELECT DISTINCT Table2.State, Table2.Product, Table2.Version FROM Table2 LEFT JOIN Table1 ON Table1.State = Table2.State AND Table1.Product = Table2.Product AND Table1.Distributor = 'X' WHERE Table1.Distributor IS NULL
어떤 하위 쿼리가 필요하지 않습니다.
편집 : 코멘트 표시로, DISTINCT가 필요하지 않습니다. 감사!
-
==============================
3.선택 표에서 * 여기서없는 상태에서 (표에서 선택 상태 어디에 유통 = 'X')
선택 표에서 * 여기서없는 상태에서 (표에서 선택 상태 어디에 유통 = 'X')
아마 아닐 가장 영리하지만 그 작동합니다.
-
==============================
4.
SELECT DISTINCT t2.State, t2.Product, t2.Version FROM table2 t2 JOIN table1 t1 ON t1.State = t2.State AND t1.Product = t2.Product AND t1.Distributor <> 'X'
-
==============================
5.오라클의 경우 :
오라클의 경우 :
SELECT t2.State, t2.Product, t2.Version FROM Table2 t2, Table t1 WHERE t1.State(+) = t2.State AND t1.Product(+) = t2.Product AND t1.Distributor(+) = :distributor AND t1.State IS NULL
from https://stackoverflow.com/questions/508509/finding-unmatched-records-with-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 데이터베이스 디자인 질문 - 카테고리 / 하위 카테고리 (0) | 2020.06.30 |
---|---|
[SQL] 어떻게 오라클 데이터베이스의 테이블의 컬럼의 모든 메타 데이터를 볼 수 있습니다? (0) | 2020.06.30 |
[SQL] 커밋 된 트랜잭션을 롤백 (0) | 2020.06.30 |
[SQL] 한 번에 여러 SQL 문을 실행 MyBatis로, 그 수 있습니까? (0) | 2020.06.30 |
[SQL] 마 DDL 문은 항상 당신에게 커밋 암시를 제공하거나 암시 롤백을받을 수 있나요? (0) | 2020.06.30 |