[SQL] 어떻게 가입하여 다른 테이블에서 존재하지 않는 데이터를 찾는 방법은?
SQL어떻게 가입하여 다른 테이블에서 존재하지 않는 데이터를 찾는 방법은?
내가 좋아하는 외모 두 개의 테이블 TABLE1이있다 :
id name address
1 mm 123
2 nn 143
및 TABLE2 w / C 외모와 같은 :
name age
mm 6
oo 9
나는 TABLE2로 TABLE1을 비교하여 비 기존의 이름을 싶어.
그러니까 기본적으로, 나는 / C는 TABLE2에 존재하지 않는 NN 이름이 승, 출력은 다음과 같이한다, 2 행을 얻을 수있다 :
id name address
2 nn 143
나는이 시도했지만 작동하지 않습니다 :
SELECt w.* FROM TABLE1 W INNER JOIN TABLE2 V
ON W.NAME <> V.NAME
그것은 여전히 기존 레코드를 얻고있다.
해결법
-
==============================
1.내부는 여기에 도움이되지 않습니다 가입하세요.
내부는 여기에 도움이되지 않습니다 가입하세요.
이 문제를 해결하는 한 가지 방법은 LEFT를 사용하는 것입니다 가입 :
SELECT w.* FROM TABLE1 W LEFT JOIN TABLE2 V ON W.name = V.name WHERE ISNULL(V.name);
-
==============================
2.당신이 필요로하는 관계 연산자는 반 차이 일명 antijoin입니다.
당신이 필요로하는 관계 연산자는 반 차이 일명 antijoin입니다.
대부분의 SQL 제품은 명시 적 반 차이 운영자 또는 키워드 부족하다. FWIW 진정한 관계형 언어 튜토리얼, 표준 SQL-92는) 세 L 조인 술어하지만, 다른 생각을 유혹하지만, NOT MATCH (하위 쿼리)에 대한 의미가 반 차이와 동일하지 않습니다 일치 (하위 쿼리가 있습니다 (하나이 없습니다 D가 성공적으로)을하지 MATCHING 반 차이를 사용합니다.
세미 차이는 물론 다른 SQL 술어를 사용하여 작성 될 수있다. 일반적으로 본 가장은 다음과 같습니다 외부 밀접하게 다음 또는 IN (하위 쿼리) EXISTS, WHERE 절에 널 (null)에 대한 테스트로 가입 할 수 있습니다. 당신의 SQL 제품 지원을하고 다시는 데이터에 따라 경우 (오라클에서 MINUS에 해당)를 제외하고 사용하는 것은 또 다른 가능한 접근 방법이다 (특히, 두 테이블의 제목이 동일한 경우).
(가) 조항이 작성된 코드에 더 가깝게하고, 예를 들어 조인 된 테이블을 통해 투사 발생하지 않습니다에 가입하기 때문에 개인적으로, 나는 가입 반 차이를 SQL에서 사용하기 위해 존재 선호
SELECT * FROM TABLE1 W WHERE NOT EXISTS ( SELECT * FROM TABLE2 V WHERE W.NAME = V.NAME );
(외부에 같은 조인 방법) NOT IN (하위 쿼리)와 마찬가지로, 당신은 하위 쿼리 내에 WHERE 절은 널 (힌트를 포함하는 경우 각별히주의해야합니다 WHERE 하위 쿼리들을 평가의 UNKNOWN 인해 널 (null)의 존재에 절 다음 경우 ) 예상치 못한 결과를 얻을 수있는 존재로 FALSE로 강제됩니다.
UPDATE (3 년)에 : 당신이 null로 예상치 못한 결과에 대해 걱정 (당신이해야한다)이라면 정지 전체를 사용하여 더 읽기되고 있기 때문에 NOT IN (하위 쿼리) 선호에 이성을 상실 이후, 나는 더 많은했던 것 여러 해 전에.
예컨대 W 및 V 범위의 변수에 대한 요구가없는 경우, 하나의 방법은 그것을 더 읽을
SELECT * FROM TABLE1 WHERE name NOT IN ( SELECT name FROM TABLE2 );
from https://stackoverflow.com/questions/7494586/how-to-find-non-existing-data-from-another-table-by-join by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 하나 개의 셀에 여러 값의 SQL 쿼리 (0) | 2020.04.22 |
---|---|
[SQL] 어떻게 BigQuery에서 피벗을 확장 할 수? (0) | 2020.04.22 |
[SQL] 어떻게 MS Access 쿼리에서 직접 시스템 사용자 이름을 사용 하는가? (0) | 2020.04.22 |
[SQL] 결과를 사용할 수까지 여러 건의 SELECT를 시도하는 방법? (0) | 2020.04.22 |
[SQL] PostgreSQL의 멀티 INSERT는 ... 여러 열로의 반품 (0) | 2020.04.22 |