SQL Server를 제외하고 다른 열만 사용하면 어떻게 다른 열을 반환 할 수 있습니까?SQL Server를 제외한 열 반환
예 : 다른 이름 리턴이있는 경우이 경우
SELECT ID, NAME FROM TABLE_B
EXCEPT
SELECT ID, NAME FROM TABLE_A
, 그냥 이름 열을 보여줍니다.
SQL Server를 제외하고 다른 열만 사용하면 어떻게 다른 열을 반환 할 수 있습니까?SQL Server를 제외한 열 반환
예 : 다른 이름 리턴이있는 경우이 경우
SELECT ID, NAME FROM TABLE_B
EXCEPT
SELECT ID, NAME FROM TABLE_A
, 그냥 이름 열을 보여줍니다.
코드가 정확합니다. 반복 행이 없습니다 (ID + NAME!).
하지만 제대로 이해하면 이름에만 집중할 수 있습니다. [주석 대해 편집 :]
SELECT NAME FROM TABLE_B
EXCEPT
SELECT NAME FROM TABLE_A
을 : 다음 선택된 필드에서 ID를 제거
이 TABLE_A에없는 TABLE_B 구별 행을 나타낸다. 이것이 EXCEPT를 사용하는 목표입니다. 다른 무엇보다도 EXCEPT는 해결책이 아닙니다.
당신이 두 테이블의 모든 개의 다른 이름을 찾고있는 경우, 당신은 사용할 수 있습니다
select distinct NAME
from
(select NAME from TABLE_A
UNION
select NAME from TABLE_B) as T
당신의 솔루션으로는'TABLE_B '에서'TABLE_A'가 아닌 이름 만 얻을 수 있습니다. 'TABLE_A'에있는 이름들은 어떨까요? –
@diiN_ 네 말이 맞아. TABLE_B의 개별 행을 TABLE_A에없는 행으로 표시합니다. EXCEPT를 사용하는 것이 목표입니다. 다른 무엇보다도 EXCEPT는 해결책이 아닙니다. 귀하의 의견에 관해서는 ... @ diiN_ 어쩌면 당신은 'distinct distinct name from (TABLE_A UNION의 NAME을 TABLE_B의 NAME을 선택하십시오.)'과 같은 것을 찾고 있습니다. 두 테이블 모두에서 다른 이름을 얻을 수 있습니다. – MarcM
당신은 결과 세트를 얻을 수있는 형태로 된 두 번째 테이블에서 플래그 존재하지 않는 데이터를
ID flag_ID NAME flag_Name
1 ! A ! -- No Id=1, no NAME ='A' exists in the second table
3 NULL NULL ! -- Id=3 exists, no NAME is NULL exists
4 NULL Y NULL -- Both values exist but never in the same row
그리고 필요한 기준으로 진행하십시오.
SELECT b.ID,
CASE WHEN NOT EXISTS (SELECT 1 FROM a t2 WHERE t2.ID=b.ID) THEN '!' END flag_ID,
b.NAME,
CASE WHEN NOT EXISTS (SELECT 1 FROM a t2
WHERE ISNULL(NULLIF(b.NAME, t2.NAME), NULLIF(t2.NAME, b.NAME)) IS NULL)
THEN '!' END flag_Name
FROM b
LEFT JOIN a ON a.ID = b.ID
AND ISNULL(NULLIF(a.NAME, b.NAME), NULLIF(b.NAME, a.NAME)) IS NULL
WHERE a.ID IS NULL
OR ISNULL(NULLIF(a.NAME, b.NAME), NULLIF(b.NAME, a.NAME)) IS NOT NULL
당신은 내가 완전히 당신이 요구하는지 이해하지 않는 일부 샘플 데이터를 원하는 출력을 제공 할 수 있습니다
가정 ID는 널 (NULL)은 "동일한"고려되어야한다, NAME이 널 (NULL), NULL NOT입니까? – Tanner
어쩌면 [이 답변] (http://stackoverflow.com/a/2077929/5809511)을보십시오. –
ID, NAME을 (를) 사용할 수 있습니까? – Serg