CREATE TABLE TEST(ID INT , name CHAR(4))

CREATE TABLE TESTB(BID INT , name CHAR(4))

GO


INSERT INTO test VALUES(1,'aaaa')

INSERT INTO test VALUES(2,'bbbb')

INSERT INTO test VALUES(3,'cccc')

INSERT INTO test VALUES(4,'dddd')

INSERT INTO testb VALUES(1,'xxxx')

INSERT INTO testb VALUES(2,'yyyy')

INSERT INTO testb VALUES(3,'zzzz')

GO


SELECT * FROM test

SELECT * FROM testb

GO

 


-- T-SQL OUTER JOIN

SELECT a.id,a.name, b.bid, b.name

FROM TEST a, TESTB b

WHERE a.id*=b.bid

AND b.name IS NULL


-- 일단 오류발생: 쿼리에서 ANSI 형식이 아닌 외부 조인 연산자("*=" 또는 "=*")를 사용합니다. 이 쿼리를 수정하지 않고 실행하려면 저장 프로시저 sp_dbcmptlevel을 사용하여 현재 데이터베이스의 호환성 수준을 80 이하로 설정하십시오. 가장 좋은 방법은 ANSI 외부 조인 연산자(LEFT OUTER JOIN, RIGHT OUTER JOIN)를 사용하여 쿼리를 다시 작성하는 것입니다. SQL Server의 다음 버전에서는 ANSI 형식이 아닌 조인 연산자는 역호환성 모드에서도 지원되지 않습니다.

 

-- 결과 (b.name IS NULL 필터링 후 조인)

1 aaaa 1 xxxx

2 bbbb 2 yyyy

3 cccc 3 zzzz

4 dddd NULL NULL




-- ANSI-SQL의 OUTER JOIN

SELECT a.id, a.name, b.bid, b.name

FROM TEST a LEFT OUTER JOIN TESTB b

            ON a.id=b.bid

WHERE b.name IS NULL


-- 결과 (조인 후 필터링)

4 dddd NULL NULL



'database' 카테고리의 다른 글

varchar냐 date냐  (1) 2011.08.19
오라클과 MSSQL 함수 비교  (0) 2010.06.18
DBMS에 따른 날짜포맷 변환  (0) 2010.06.18
tinyxml 수정사항  (0) 2010.01.15
블로그 이미지

란마12

,