2010-07-16 2 views
0

인가 어디 가능한이 같은 쿼리 (I 오류를 받고 있어요) 가지고 :SQL은 작업을 설정하고 절

SELECT ColumnA FROM Table1 
EXCEPT 
SELECT ColumnB FROM Table2 
WHERE Table1.ColumnC = Table2.ColumnC 

SQL 내 where 절에 Table1.colmnC을 바인딩 할 수 있습니다. 이 쿼리를 실행할 수있는 방법이 있습니까? 같은 결과를 얻는 다른 방법? 임시 테이블을 사용하여이 작업을 수행 할 수 있다는 것을 알고 있지만 ... 설정된 작업으로이 작업을 수행하려고합니다.

감사

답변

1

언뜻 :

SELECT ColumnA FROM Table1 
WHERE 
    NOT EXISTS (
     SELECT * FROM Table2 
     WHERE Table1.ColumnC = Table2.ColumnC AND Table1.ColumnA = Table2.ColumnB) 
0
그러나

SELECT ColumnA FROM Table1 
WHERE 
    NOT EXISTS (SELECT * FROM Table2 WHERE Table1.ColumnC = Table2.ColumnC) 

, 나는 당신이 columnC이 columnsA와 B 일치하는 COLUMNA 값에서 열 B 값을 제외 할이 생각

당신이하고있는 일은

(SELECT ColumnA FROM Table1) 
EXECPT 
(SELECT ColumnB FROM Table2 
WHERE Table1.ColumnC = Table2.ColumnC) 
입니다.

괄호는 왜 작동하지 않는지를 보여줍니다.

나는 당신이 성취하려는 것을 약간 혼란스러워합니다.

ColumnA가 Table2.ColumnB에없고 Table1.ColumnC가 Table2.ColumnC와 동일한 Table1의 모든 ColumnA입니까?

0

쿼리에 대한 오류를 바로 수정하려면 다음과 같이 ColumnA와 ColumnB의 데이터 형식이 같으면 잘 실행해야합니다.

SELECT ColumnA FROM Table1 
EXCEPT 
SELECT ColumnB FROM Table2 

Except는 결과 집합을 비교한다. 결과 집합을 일부 열에 결합하는 개념은 없습니다.