질문과답변

글보기
제목Left outer join 에서 On의 기능2018-07-17 21:06:12
작성자

안년하십니까?

 

SELECT * FROM T_EDU_JOINA A 

     LEFT OUTER JOIN T_EDU_JOINB B 

     ON A.SEQ = B.SEQ;

위의 결과에서 아래 1), 2) 와 같이 ON절에 추가로 제약 조건을 줄때 

제가 생각했던 결과와 전혀 다른 결과가 나와서, Outer Join 시 ON의 역할에 대한 문의를 드리고자 합니다.

 

1) SELECT * FROM T_EDU_JOINA A 

     LEFT OUTER JOIN T_EDU_JOINB B 

     ON A.SEQ = B.SEQ and a.seq <= 3;

     예상결과와 결과 차이 발생

 

2) SELECT * FROM T_EDU_JOINA A 

     LEFT OUTER JOIN T_EDU_JOINB B 

     ON A.SEQ = B.SEQ 

     AND    A.DATA <= 'a3';

  예상결과와 결과 차이 발생 

 

mb-file.php?path=2018%2F07%2F17%2FF19_%EB%AC%B8%EC%9D%98.png
Script ]

 

CREATE TABLE [dbo].[T_EDU_JOINA](

[seq] [int] NULL,

[data] [char](5) NULL

) ON [PRIMARY]

 

GO

 

CREATE TABLE [dbo].[T_EDU_JOINB](

[seq] [int] NULL,

[data1] [char](5) NULL,

[data2] [char](5) NULL

) ON [PRIMARY]


INSERT INTO [dbo].[T_EDU_JOINA]   ([seq],[data]) VALUES ( 1, 'a1' );
INSERT INTO [dbo].[T_EDU_JOINA]   ([seq],[data]) VALUES ( 2, 'a2' );
INSERT INTO [dbo].[T_EDU_JOINA]   ([seq],[data]) VALUES ( 3, 'a3' );
INSERT INTO [dbo].[T_EDU_JOINA]   ([seq],[data]) VALUES ( 4, 'a4' );


INSERT INTO [dbo].[T_EDU_JOINB]   ([seq],[data1], [data2]) VALUES ( 3, 'b3', 'c3' );
INSERT INTO [dbo].[T_EDU_JOINB]   ([seq],[data1], [data2]) VALUES ( 4, 'b4', 'c4' );
INSERT INTO [dbo].[T_EDU_JOINB]   ([seq],[data1], [data2]) VALUES ( 5, 'b5', 'c5' );
INSERT INTO [dbo].[T_EDU_JOINB]   ([seq],[data1], [data2]) VALUES ( 6, 'b6', 'c6' );

 

 

 

 

댓글

(자동등록방지 숫자를 입력해 주세요)