终于找到一个有助理解left/right/full outer join的例子

近日在学习《Understading DB2》的时候找到了一个例子,对于理解 left/right/full 三种 outer join 的大有裨益。

      先看样本数据,来自DB2的示例数据库 sample:

01db2 => insert into employee values('99999','killkill','N','Huang',null,null,null,'nothing',16,'M',null,null,null,null) ;     
02DB20000I  The SQL command completed successfully.
03  
04db2 => SELECT empno, firstnme, lastname, workdept | db2 => SELECT deptno, deptname from department order by 1;
05db2 (cont.) => FROM employee order by 4;          |                                                           
06                                                  |              
07EMPNO  FIRSTNME     LASTNAME        WORKDEPT      | DEPTNO DEPTNAME                              
08------ ------------ --------------- --------      | ------ ------------------------------------  
09000010 CHRISTINE    HAAS            A00           | A00    SPIFFY COMPUTER SERVICE DIV.          
10000110 VINCENZO     LUCCHESSI       A00           | B01    PLANNING                              
11000120 SEAN         O'CONNELL       A00           | C01    INFORMATION CENTER                    
12200010 DIAN         HEMMINGER       A00           | D01    DEVELOPMENT CENTER                    
13200120 GREG         ORLANDO         A00           | D11    MANUFACTURING SYSTEMS                 
14000020 MICHAEL      THOMPSON        B01           | D21    ADMINISTRATION SYSTEMS                
15000030 SALLY        KWAN            C01           | E01    SUPPORT SERVICES                      
16000130 DELORES      QUINTANA        C01           | E11    OPERATIONS                            
17000140 HEATHER      NICHOLLS        C01           | E21    SOFTWARE SUPPORT                      
18200140 KIM          NATZ            C01           | F22    BRANCH OFFICE F2                      
19000060 IRVING       STERN           D11           | G22    BRANCH OFFICE G2                      
20000150 BRUCE        ADAMSON         D11           | H22    BRANCH OFFICE H2                      
21000160 ELIZABETH    PIANKA          D11           | I22    BRANCH OFFICE I2                      
22000170 MASATOSHI    YOSHIMURA       D11           | J22    BRANCH OFFICE J2                      
23000180 MARILYN      SCOUTTEN        D11           |                                              
24000190 JAMES        WALKER          D11           |   14 record(s) selected.                     
25000200 DAVID        BROWN           D11           |
26000210 WILLIAM      JONES           D11           |
27000220 JENNIFER     LUTZ            D11           |
28200170 KIYOSHI      YAMAMOTO        D11           |
29200220 REBA         JOHN            D11           |
30000070 EVA          PULASKI         D21           |
31000230 JAMES        JEFFERSON       D21           |
32000240 SALVATORE    MARINO          D21           |
33000250 DANIEL       SMITH           D21           |
34000260 SYBIL        JOHNSON         D21           |
35000270 MARIA        PEREZ           D21           |
36200240 ROBERT       MONTEVERDE      D21           |
37000050 JOHN         GEYER           E01           |
38000090 EILEEN       HENDERSON       E11           |
39000280 ETHEL        SCHNEIDER       E11           |
40000290 JOHN         PARKER          E11           |
41000300 PHILIP       SMITH           E11           |
42000310 MAUDE        SETRIGHT        E11           |
43200280 EILEEN       SCHWARTZ        E11           |
44200310 MICHELLE     SPRINGER        E11           |
45000100 THEODORE     SPENSER         E21           |
46000320 RAMLAL       MEHTA           E21           |
47000330 WING         LEE             E21           |
48000340 JASON        GOUNOT          E21           |
49200330 HELENA       WONG            E21           |
50200340 ROY          ALONZO          E21           |
5199999  killkill     Huang           -             |

      注意,我故意插了一条没有对应部门的测试数据到 employee 表中,现在看看 left/right/full out join 的结果:

      LEFT OUT JOIN

image

01db2 => SELECT empno, firstnme, lastname, deptname
02db2 (cont.) => FROM employee LEFT OUTER JOIN department
03db2 (cont.) => ON workdept = deptno
04db2 (cont.) => ;
05  
06EMPNO  FIRSTNME     LASTNAME        DEPTNAME                            
07------ ------------ --------------- ------------------------------------
08000010 CHRISTINE    HAAS            SPIFFY COMPUTER SERVICE DIV.        
09000020 MICHAEL      THOMPSON        PLANNING                            
10000030 SALLY        KWAN            INFORMATION CENTER                  
11000050 JOHN         GEYER           SUPPORT SERVICES                    
12000060 IRVING       STERN           MANUFACTURING SYSTEMS               
13000070 EVA          PULASKI         ADMINISTRATION SYSTEMS              
14000090 EILEEN       HENDERSON       OPERATIONS                          
15000100 THEODORE     SPENSER         SOFTWARE SUPPORT                    
16000110 VINCENZO     LUCCHESSI       SPIFFY COMPUTER SERVICE DIV.        
17000120 SEAN         O'CONNELL       SPIFFY COMPUTER SERVICE DIV.        
18000130 DELORES      QUINTANA        INFORMATION CENTER                  
19000140 HEATHER      NICHOLLS        INFORMATION CENTER                  
20000150 BRUCE        ADAMSON         MANUFACTURING SYSTEMS               
21000160 ELIZABETH    PIANKA          MANUFACTURING SYSTEMS               
22000170 MASATOSHI    YOSHIMURA       MANUFACTURING SYSTEMS               
23000180 MARILYN      SCOUTTEN        MANUFACTURING SYSTEMS               
24000190 JAMES        WALKER          MANUFACTURING SYSTEMS               
25000200 DAVID        BROWN           MANUFACTURING SYSTEMS               
26000210 WILLIAM      JONES           MANUFACTURING SYSTEMS               
27000220 JENNIFER     LUTZ            MANUFACTURING SYSTEMS               
28000230 JAMES        JEFFERSON       ADMINISTRATION SYSTEMS              
29000240 SALVATORE    MARINO          ADMINISTRATION SYSTEMS              
30000250 DANIEL       SMITH           ADMINISTRATION SYSTEMS              
31000260 SYBIL        JOHNSON         ADMINISTRATION SYSTEMS              
32000270 MARIA        PEREZ           ADMINISTRATION SYSTEMS              
33000280 ETHEL        SCHNEIDER       OPERATIONS                          
34000290 JOHN         PARKER          OPERATIONS                          
35000300 PHILIP       SMITH           OPERATIONS                          
36000310 MAUDE        SETRIGHT        OPERATIONS                          
37000320 RAMLAL       MEHTA           SOFTWARE SUPPORT                    
38000330 WING         LEE             SOFTWARE SUPPORT                    
39000340 JASON        GOUNOT          SOFTWARE SUPPORT                    
40200010 DIAN         HEMMINGER       SPIFFY COMPUTER SERVICE DIV.        
41200120 GREG         ORLANDO         SPIFFY COMPUTER SERVICE DIV.        
42200140 KIM          NATZ            INFORMATION CENTER                  
43200170 KIYOSHI      YAMAMOTO        MANUFACTURING SYSTEMS               
44200220 REBA         JOHN            MANUFACTURING SYSTEMS               
45200240 ROBERT       MONTEVERDE      ADMINISTRATION SYSTEMS              
46200280 EILEEN       SCHWARTZ        OPERATIONS                          
47200310 MICHELLE     SPRINGER        OPERATIONS                          
48200330 HELENA       WONG            SOFTWARE SUPPORT                    
49200340 ROY          ALONZO          SOFTWARE SUPPORT                    
5099999  killkill     Huang           -

      RIGHT OUTER JOIN

image

01db2 => SELECT empno, firstnme, lastname, deptname
02db2 (cont.) => FROM employee RIGHT OUTER JOIN department
03db2 (cont.) => ON workdept = deptno
04db2 (cont.) => ;
05  
06EMPNO  FIRSTNME     LASTNAME        DEPTNAME                            
07------ ------------ --------------- ------------------------------------
08000010 CHRISTINE    HAAS            SPIFFY COMPUTER SERVICE DIV.        
09000020 MICHAEL      THOMPSON        PLANNING                            
10000030 SALLY        KWAN            INFORMATION CENTER                  
11000050 JOHN         GEYER           SUPPORT SERVICES                    
12000060 IRVING       STERN           MANUFACTURING SYSTEMS               
13000070 EVA          PULASKI         ADMINISTRATION SYSTEMS              
14000090 EILEEN       HENDERSON       OPERATIONS                          
15000100 THEODORE     SPENSER         SOFTWARE SUPPORT                    
16000110 VINCENZO     LUCCHESSI       SPIFFY COMPUTER SERVICE DIV.        
17000120 SEAN         O'CONNELL       SPIFFY COMPUTER SERVICE DIV.        
18000130 DELORES      QUINTANA        INFORMATION CENTER                  
19000140 HEATHER      NICHOLLS        INFORMATION CENTER                  
20000150 BRUCE        ADAMSON         MANUFACTURING SYSTEMS               
21000160 ELIZABETH    PIANKA          MANUFACTURING SYSTEMS               
22000170 MASATOSHI    YOSHIMURA       MANUFACTURING SYSTEMS               
23000180 MARILYN      SCOUTTEN        MANUFACTURING SYSTEMS               
24000190 JAMES        WALKER          MANUFACTURING SYSTEMS               
25000200 DAVID        BROWN           MANUFACTURING SYSTEMS               
26000210 WILLIAM      JONES           MANUFACTURING SYSTEMS               
27000220 JENNIFER     LUTZ            MANUFACTURING SYSTEMS               
28000230 JAMES        JEFFERSON       ADMINISTRATION SYSTEMS              
29000240 SALVATORE    MARINO          ADMINISTRATION SYSTEMS              
30000250 DANIEL       SMITH           ADMINISTRATION SYSTEMS              
31000260 SYBIL        JOHNSON         ADMINISTRATION SYSTEMS              
32000270 MARIA        PEREZ           ADMINISTRATION SYSTEMS              
33000280 ETHEL        SCHNEIDER       OPERATIONS                          
34000290 JOHN         PARKER          OPERATIONS                          
35000300 PHILIP       SMITH           OPERATIONS                          
36000310 MAUDE        SETRIGHT        OPERATIONS                          
37000320 RAMLAL       MEHTA           SOFTWARE SUPPORT                    
38000330 WING         LEE             SOFTWARE SUPPORT                    
39000340 JASON        GOUNOT          SOFTWARE SUPPORT                    
40200010 DIAN         HEMMINGER       SPIFFY COMPUTER SERVICE DIV.        
41200120 GREG         ORLANDO         SPIFFY COMPUTER SERVICE DIV.        
42200140 KIM          NATZ            INFORMATION CENTER                  
43200170 KIYOSHI      YAMAMOTO        MANUFACTURING SYSTEMS               
44200220 REBA         JOHN            MANUFACTURING SYSTEMS               
45200240 ROBERT       MONTEVERDE      ADMINISTRATION SYSTEMS              
46200280 EILEEN       SCHWARTZ        OPERATIONS                          
47200310 MICHELLE     SPRINGER        OPERATIONS                          
48200330 HELENA       WONG            SOFTWARE SUPPORT                    
49200340 ROY          ALONZO          SOFTWARE SUPPORT                    
50-      -            -               BRANCH OFFICE H2                    
51-      -            -               BRANCH OFFICE I2                    
52-      -            -               BRANCH OFFICE G2                    
53-      -            -               DEVELOPMENT CENTER                  
54-      -            -               BRANCH OFFICE F2                    
55-      -            -               BRANCH OFFICE J2

      FULL OUTER JOIN

image

01db2 => SELECT empno, firstnme, lastname, deptname
02db2 (cont.) => FROM employee FULL OUTER JOIN department
03db2 (cont.) => ON workdept = deptno
04db2 (cont.) => ;
05  
06EMPNO  FIRSTNME     LASTNAME        DEPTNAME                            
07------ ------------ --------------- ------------------------------------
08000010 CHRISTINE    HAAS            SPIFFY COMPUTER SERVICE DIV.        
09000020 MICHAEL      THOMPSON        PLANNING                            
10000030 SALLY        KWAN            INFORMATION CENTER                  
11000050 JOHN         GEYER           SUPPORT SERVICES                    
12000060 IRVING       STERN           MANUFACTURING SYSTEMS               
13000070 EVA          PULASKI         ADMINISTRATION SYSTEMS              
14000090 EILEEN       HENDERSON       OPERATIONS                          
15000100 THEODORE     SPENSER         SOFTWARE SUPPORT                    
16000110 VINCENZO     LUCCHESSI       SPIFFY COMPUTER SERVICE DIV.        
17000120 SEAN         O'CONNELL       SPIFFY COMPUTER SERVICE DIV.        
18000130 DELORES      QUINTANA        INFORMATION CENTER                  
19000140 HEATHER      NICHOLLS        INFORMATION CENTER                  
20000150 BRUCE        ADAMSON         MANUFACTURING SYSTEMS               
21000160 ELIZABETH    PIANKA          MANUFACTURING SYSTEMS               
22000170 MASATOSHI    YOSHIMURA       MANUFACTURING SYSTEMS               
23000180 MARILYN      SCOUTTEN        MANUFACTURING SYSTEMS               
24000190 JAMES        WALKER          MANUFACTURING SYSTEMS               
25000200 DAVID        BROWN           MANUFACTURING SYSTEMS               
26000210 WILLIAM      JONES           MANUFACTURING SYSTEMS               
27000220 JENNIFER     LUTZ            MANUFACTURING SYSTEMS               
28000230 JAMES        JEFFERSON       ADMINISTRATION SYSTEMS              
29000240 SALVATORE    MARINO          ADMINISTRATION SYSTEMS              
30000250 DANIEL       SMITH           ADMINISTRATION SYSTEMS              
31000260 SYBIL        JOHNSON         ADMINISTRATION SYSTEMS              
32000270 MARIA        PEREZ           ADMINISTRATION SYSTEMS              
33000280 ETHEL        SCHNEIDER       OPERATIONS                          
34000290 JOHN         PARKER          OPERATIONS                          
35000300 PHILIP       SMITH           OPERATIONS                          
36000310 MAUDE        SETRIGHT        OPERATIONS                          
37000320 RAMLAL       MEHTA           SOFTWARE SUPPORT                    
38000330 WING         LEE             SOFTWARE SUPPORT                    
39000340 JASON        GOUNOT          SOFTWARE SUPPORT                    
40200010 DIAN         HEMMINGER       SPIFFY COMPUTER SERVICE DIV.        
41200120 GREG         ORLANDO         SPIFFY COMPUTER SERVICE DIV.        
42200140 KIM          NATZ            INFORMATION CENTER                  
43200170 KIYOSHI      YAMAMOTO        MANUFACTURING SYSTEMS               
44200220 REBA         JOHN            MANUFACTURING SYSTEMS               
45200240 ROBERT       MONTEVERDE      ADMINISTRATION SYSTEMS              
46200280 EILEEN       SCHWARTZ        OPERATIONS                          
47200310 MICHELLE     SPRINGER        OPERATIONS                          
48200330 HELENA       WONG            SOFTWARE SUPPORT                    
49200340 ROY          ALONZO          SOFTWARE SUPPORT                    
50-      -            -               BRANCH OFFICE H2                    
51-      -            -               BRANCH OFFICE I2                    
52-      -            -               BRANCH OFFICE G2                    
53-      -            -               DEVELOPMENT CENTER                  
54-      -            -               BRANCH OFFICE F2                    
55-      -            -               BRANCH OFFICE J2                    
5699999  killkill     Huang           -

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值