none
외부 조인 관련 질문합니다. RRS feed

  • 질문

  • 외부조인 할때 *= 기호 사용 문제 입니다.

    전에  SQL Server 2000 사용할때는 외부조인 할때 *=, =* 등을 사용했는데

    현재 SQL Server 2012 안되는듯하여 질문합니다.

    예를 들어 다음과 같은 테이블이 있을때

    create table t1( i int, j int);
    create table t2( a int, b int);

    -- drop table t1
    -- drop table t2

    insert into t1 (i, j) values(1, 100);
    insert into t1 (i, j) values(2, 200);

    insert into t2 (a, b) values(2, 2000);

    select * from t1

    i           j
    ----------- -----------
    1           100
    2           200

    select * from t2

    a           b
    ----------- -----------
    2           2000

    -- 외부조인

    1. select a.*, b.* from t1 a left outer join t2 b on a.i = b.a

    i           j           a           b
    ----------- ----------- ----------- -----------
    1           100         NULL        NULL
    2           200         2           2000

    2. select a.*, b.* from t1 a, t2 b where a.i *= b.a

    메시지 102, 수준 15, 상태 1, 줄 115
    '*=' 근처의 구문이 잘못되었습니다.

    라고 나오는데요.. 2번 쿼리가 예전에는 잘 되고 사용 했었는데 지금은 안되는 이유가 있을까요?

    비표준은 모두 금지된건지 아니면 다른방법으로 바뀐건지 궁금합니다;

    2015년 5월 7일 목요일 오전 2:31

답변

  • 말씀하신 것 과 같이 2000에서는 지원했지만 버전 업이 되면서 현재 지원하지 않습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    • 답변으로 표시됨 developerhd 2015년 5월 11일 월요일 오전 12:30
    2015년 5월 8일 금요일 오전 6:28
    중재자
  • 위에 Jina Lee께서 답변주신대로 *= =*는 2012에서는 더 이상 사용할 수 없습니다.

    SQL Server 2008R2까지는 데이터베이스의 호환성수준을 80으로 낮춰서 사용하면 해당 데이터베이스는 SQL Server 2000의 쿼리를 그대로 사용 가능했었습니다.

    하지만 SQL Server 2012부터는 90모드 이상을 지원하기 때문에, *= 나 =*로 조인을 사용할 수 없습니다.

    그 외에도 지원하지 않는 구문들이 있으니 아래 문서를 참고하실 것을 권고 드립니다.(호환성 수준 설정 80인 경우가 SQL Server 2000입니다)

    ALTER DATABASE 호환성 수준

    감사합니다.

    Younggun Kim

    MCDBA, MCITP
    Consultant @ Database Division in SQLRoad
    http://www.sqlroad.com  http://www.sqlserver.co.kr
    ygkim@sqlroad.com


    • 편집됨 Younggun KimMVP 2015년 5월 8일 금요일 오후 12:16
    • 답변으로 표시됨 developerhd 2015년 5월 11일 월요일 오전 12:31
    2015년 5월 8일 금요일 오후 12:16

모든 응답

  • 말씀하신 것 과 같이 2000에서는 지원했지만 버전 업이 되면서 현재 지원하지 않습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    • 답변으로 표시됨 developerhd 2015년 5월 11일 월요일 오전 12:30
    2015년 5월 8일 금요일 오전 6:28
    중재자
  • 위에 Jina Lee께서 답변주신대로 *= =*는 2012에서는 더 이상 사용할 수 없습니다.

    SQL Server 2008R2까지는 데이터베이스의 호환성수준을 80으로 낮춰서 사용하면 해당 데이터베이스는 SQL Server 2000의 쿼리를 그대로 사용 가능했었습니다.

    하지만 SQL Server 2012부터는 90모드 이상을 지원하기 때문에, *= 나 =*로 조인을 사용할 수 없습니다.

    그 외에도 지원하지 않는 구문들이 있으니 아래 문서를 참고하실 것을 권고 드립니다.(호환성 수준 설정 80인 경우가 SQL Server 2000입니다)

    ALTER DATABASE 호환성 수준

    감사합니다.

    Younggun Kim

    MCDBA, MCITP
    Consultant @ Database Division in SQLRoad
    http://www.sqlroad.com  http://www.sqlserver.co.kr
    ygkim@sqlroad.com


    • 편집됨 Younggun KimMVP 2015년 5월 8일 금요일 오후 12:16
    • 답변으로 표시됨 developerhd 2015년 5월 11일 월요일 오전 12:31
    2015년 5월 8일 금요일 오후 12:16