2010-02-15 6 views
0

왼쪽 결합을 수행 할 때 기호 (예 : * =)는 무엇입니까? 테이블 A와 B가 있는데 테이블 B에 레코드가없는 경우에도 항상 테이블 A의 모든 레코드를 반환해야합니다.T-SQL 왼쪽 결합 기호

답변

3

해당 연산자는 was deprecated in Sql Server 2008이므로 사용해서는 안됩니다. 미래 버전.

대신 ANSI 규격 LEFT JOIN 또는 LEFT OUTER JOIN을 사용해야합니다.

이유가 없어졌습니다. 이 연산자의 구문은 혼란 스럽습니다 (많은 언어의 "곱하기와 대입"의 표준 오버로드와 충돌 함) 비표준입니다.

5

이것은 새로운 ansi 표준 구문으로 훨씬 더 명확합니다.

SELECT * 
FROM A 
LEFT OUTER JOIN B 
ON A.ID = B.ID 
0

그런 구문은 사용하지 마십시오. 새로운이 "오른쪽 외부 조인" "LEFT OUTER 조인"및/또는 포함하도록 다시 작성 구문 :

마이크로 소프트 SQL SERVERT 이전 버전의 : 링크에서

SELECT 
    a.*, B.* 
    FROM TableA     a 
     LEFT OUTER JOIN TableB b ON a.id=b.id 

Difference between * = and LEFT Outer Join
2000, 왼쪽 및 오른쪽 바깥 쪽 *==* 연산자를 사용하여 WHERE 절에 조인 조건이 지정되었습니다. 경우에 따라이 구문 은 이 둘 이상의 방식으로 해석 될 수있는 모호한 쿼리를 생성합니다. SQL-92 규격 외부 조인은 이 FROM 절에 지정되어 있으며 이이 모호성을 초래하지 않습니다. SQL-92 구문이보다 정확하므로 이전 Transact-SQL 외부 조인 구문을 에 사용하는 방법에 대한 자세한 정보는 WHERE 절이 이 릴리스에 포함되어 있지 않습니다. 구문 SQL 서버의 향후 버전에서 지원되지 않을 수 있습니다. 거래-SQL의 외부를 사용하는 모든 문은 는 SQL-92 구문 그 외에

0

많은 오류를 찾고 단순화 조인, ANSI 표준 구문 LEFT [OUTER]의 사용 가입을 사용하도록 변경해야 조인 나를 믿어. WHERE 절의 조인 피연산자와 조인 피연산자의 필터를 명확하게 구분할 수도 있습니다. 내부 조인에 ANSI 구문도 사용하는 것이 좋습니다.