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

news/2024/9/20 17:10:44

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

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

db2 => insert into employee values('99999','killkill','N','Huang',null,null,null,'nothing',16,'M',null,null,null,null) ;     
DB20000I  The SQL command completed successfully.db2 => SELECT empno, firstnme, lastname, workdept | db2 => SELECT deptno, deptname from department order by 1;
db2 (cont.) => FROM employee order by 4;          |                                                           |              
EMPNO  FIRSTNME     LASTNAME        WORKDEPT      | DEPTNO DEPTNAME                              
------ ------------ --------------- --------      | ------ ------------------------------------  
000010 CHRISTINE    HAAS            A00           | A00    SPIFFY COMPUTER SERVICE DIV.          
000110 VINCENZO     LUCCHESSI       A00           | B01    PLANNING                              
000120 SEAN         O'CONNELL       A00           | C01    INFORMATION CENTER                    
200010 DIAN         HEMMINGER       A00           | D01    DEVELOPMENT CENTER                    
200120 GREG         ORLANDO         A00           | D11    MANUFACTURING SYSTEMS                 
000020 MICHAEL      THOMPSON        B01           | D21    ADMINISTRATION SYSTEMS                
000030 SALLY        KWAN            C01           | E01    SUPPORT SERVICES                      
000130 DELORES      QUINTANA        C01           | E11    OPERATIONS                            
000140 HEATHER      NICHOLLS        C01           | E21    SOFTWARE SUPPORT                      
200140 KIM          NATZ            C01           | F22    BRANCH OFFICE F2                      
000060 IRVING       STERN           D11           | G22    BRANCH OFFICE G2                      
000150 BRUCE        ADAMSON         D11           | H22    BRANCH OFFICE H2                      
000160 ELIZABETH    PIANKA          D11           | I22    BRANCH OFFICE I2                      
000170 MASATOSHI    YOSHIMURA       D11           | J22    BRANCH OFFICE J2                      
000180 MARILYN      SCOUTTEN        D11           |                                              
000190 JAMES        WALKER          D11           |   14 record(s) selected.                     
000200 DAVID        BROWN           D11           |
000210 WILLIAM      JONES           D11           |
000220 JENNIFER     LUTZ            D11           |
200170 KIYOSHI      YAMAMOTO        D11           |
200220 REBA         JOHN            D11           |
000070 EVA          PULASKI         D21           |
000230 JAMES        JEFFERSON       D21           |
000240 SALVATORE    MARINO          D21           |
000250 DANIEL       SMITH           D21           |
000260 SYBIL        JOHNSON         D21           |
000270 MARIA        PEREZ           D21           |
200240 ROBERT       MONTEVERDE      D21           |
000050 JOHN         GEYER           E01           |
000090 EILEEN       HENDERSON       E11           |
000280 ETHEL        SCHNEIDER       E11           |
000290 JOHN         PARKER          E11           |
000300 PHILIP       SMITH           E11           |
000310 MAUDE        SETRIGHT        E11           |
200280 EILEEN       SCHWARTZ        E11           |
200310 MICHELLE     SPRINGER        E11           |
000100 THEODORE     SPENSER         E21           |
000320 RAMLAL       MEHTA           E21           |
000330 WING         LEE             E21           |
000340 JASON        GOUNOT          E21           |
200330 HELENA       WONG            E21           |
200340 ROY          ALONZO          E21           |
99999  killkill     Huang           -             |

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

      LEFT OUT JOIN

image

db2 => SELECT empno, firstnme, lastname, deptname
db2 (cont.) => FROM employee LEFT OUTER JOIN department
db2 (cont.) => ON workdept = deptno
db2 (cont.) => ;EMPNO  FIRSTNME     LASTNAME        DEPTNAME                            
------ ------------ --------------- ------------------------------------
000010 CHRISTINE    HAAS            SPIFFY COMPUTER SERVICE DIV.        
000020 MICHAEL      THOMPSON        PLANNING                            
000030 SALLY        KWAN            INFORMATION CENTER                  
000050 JOHN         GEYER           SUPPORT SERVICES                    
000060 IRVING       STERN           MANUFACTURING SYSTEMS               
000070 EVA          PULASKI         ADMINISTRATION SYSTEMS              
000090 EILEEN       HENDERSON       OPERATIONS                          
000100 THEODORE     SPENSER         SOFTWARE SUPPORT                    
000110 VINCENZO     LUCCHESSI       SPIFFY COMPUTER SERVICE DIV.        
000120 SEAN         O'CONNELL       SPIFFY COMPUTER SERVICE DIV.        
000130 DELORES      QUINTANA        INFORMATION CENTER                  
000140 HEATHER      NICHOLLS        INFORMATION CENTER                  
000150 BRUCE        ADAMSON         MANUFACTURING SYSTEMS               
000160 ELIZABETH    PIANKA          MANUFACTURING SYSTEMS               
000170 MASATOSHI    YOSHIMURA       MANUFACTURING SYSTEMS               
000180 MARILYN      SCOUTTEN        MANUFACTURING SYSTEMS               
000190 JAMES        WALKER          MANUFACTURING SYSTEMS               
000200 DAVID        BROWN           MANUFACTURING SYSTEMS               
000210 WILLIAM      JONES           MANUFACTURING SYSTEMS               
000220 JENNIFER     LUTZ            MANUFACTURING SYSTEMS               
000230 JAMES        JEFFERSON       ADMINISTRATION SYSTEMS              
000240 SALVATORE    MARINO          ADMINISTRATION SYSTEMS              
000250 DANIEL       SMITH           ADMINISTRATION SYSTEMS              
000260 SYBIL        JOHNSON         ADMINISTRATION SYSTEMS              
000270 MARIA        PEREZ           ADMINISTRATION SYSTEMS              
000280 ETHEL        SCHNEIDER       OPERATIONS                          
000290 JOHN         PARKER          OPERATIONS                          
000300 PHILIP       SMITH           OPERATIONS                          
000310 MAUDE        SETRIGHT        OPERATIONS                          
000320 RAMLAL       MEHTA           SOFTWARE SUPPORT                    
000330 WING         LEE             SOFTWARE SUPPORT                    
000340 JASON        GOUNOT          SOFTWARE SUPPORT                    
200010 DIAN         HEMMINGER       SPIFFY COMPUTER SERVICE DIV.        
200120 GREG         ORLANDO         SPIFFY COMPUTER SERVICE DIV.        
200140 KIM          NATZ            INFORMATION CENTER                  
200170 KIYOSHI      YAMAMOTO        MANUFACTURING SYSTEMS               
200220 REBA         JOHN            MANUFACTURING SYSTEMS               
200240 ROBERT       MONTEVERDE      ADMINISTRATION SYSTEMS              
200280 EILEEN       SCHWARTZ        OPERATIONS                          
200310 MICHELLE     SPRINGER        OPERATIONS                          
200330 HELENA       WONG            SOFTWARE SUPPORT                    
200340 ROY          ALONZO          SOFTWARE SUPPORT                    
99999  killkill     Huang           -    

      RIGHT OUTER JOIN

image

db2 => SELECT empno, firstnme, lastname, deptname
db2 (cont.) => FROM employee RIGHT OUTER JOIN department
db2 (cont.) => ON workdept = deptno
db2 (cont.) => ;EMPNO  FIRSTNME     LASTNAME        DEPTNAME                            
------ ------------ --------------- ------------------------------------
000010 CHRISTINE    HAAS            SPIFFY COMPUTER SERVICE DIV.        
000020 MICHAEL      THOMPSON        PLANNING                            
000030 SALLY        KWAN            INFORMATION CENTER                  
000050 JOHN         GEYER           SUPPORT SERVICES                    
000060 IRVING       STERN           MANUFACTURING SYSTEMS               
000070 EVA          PULASKI         ADMINISTRATION SYSTEMS              
000090 EILEEN       HENDERSON       OPERATIONS                          
000100 THEODORE     SPENSER         SOFTWARE SUPPORT                    
000110 VINCENZO     LUCCHESSI       SPIFFY COMPUTER SERVICE DIV.        
000120 SEAN         O'CONNELL       SPIFFY COMPUTER SERVICE DIV.        
000130 DELORES      QUINTANA        INFORMATION CENTER                  
000140 HEATHER      NICHOLLS        INFORMATION CENTER                  
000150 BRUCE        ADAMSON         MANUFACTURING SYSTEMS               
000160 ELIZABETH    PIANKA          MANUFACTURING SYSTEMS               
000170 MASATOSHI    YOSHIMURA       MANUFACTURING SYSTEMS               
000180 MARILYN      SCOUTTEN        MANUFACTURING SYSTEMS               
000190 JAMES        WALKER          MANUFACTURING SYSTEMS               
000200 DAVID        BROWN           MANUFACTURING SYSTEMS               
000210 WILLIAM      JONES           MANUFACTURING SYSTEMS               
000220 JENNIFER     LUTZ            MANUFACTURING SYSTEMS               
000230 JAMES        JEFFERSON       ADMINISTRATION SYSTEMS              
000240 SALVATORE    MARINO          ADMINISTRATION SYSTEMS              
000250 DANIEL       SMITH           ADMINISTRATION SYSTEMS              
000260 SYBIL        JOHNSON         ADMINISTRATION SYSTEMS              
000270 MARIA        PEREZ           ADMINISTRATION SYSTEMS              
000280 ETHEL        SCHNEIDER       OPERATIONS                          
000290 JOHN         PARKER          OPERATIONS                          
000300 PHILIP       SMITH           OPERATIONS                          
000310 MAUDE        SETRIGHT        OPERATIONS                          
000320 RAMLAL       MEHTA           SOFTWARE SUPPORT                    
000330 WING         LEE             SOFTWARE SUPPORT                    
000340 JASON        GOUNOT          SOFTWARE SUPPORT                    
200010 DIAN         HEMMINGER       SPIFFY COMPUTER SERVICE DIV.        
200120 GREG         ORLANDO         SPIFFY COMPUTER SERVICE DIV.        
200140 KIM          NATZ            INFORMATION CENTER                  
200170 KIYOSHI      YAMAMOTO        MANUFACTURING SYSTEMS               
200220 REBA         JOHN            MANUFACTURING SYSTEMS               
200240 ROBERT       MONTEVERDE      ADMINISTRATION SYSTEMS              
200280 EILEEN       SCHWARTZ        OPERATIONS                          
200310 MICHELLE     SPRINGER        OPERATIONS                          
200330 HELENA       WONG            SOFTWARE SUPPORT                    
200340 ROY          ALONZO          SOFTWARE SUPPORT                    
-      -            -               BRANCH OFFICE H2                    
-      -            -               BRANCH OFFICE I2                    
-      -            -               BRANCH OFFICE G2                    
-      -            -               DEVELOPMENT CENTER                  
-      -            -               BRANCH OFFICE F2                    
-      -            -               BRANCH OFFICE J2  

      FULL OUTER JOIN

image

db2 => SELECT empno, firstnme, lastname, deptname
db2 (cont.) => FROM employee FULL OUTER JOIN department
db2 (cont.) => ON workdept = deptno
db2 (cont.) => ;EMPNO  FIRSTNME     LASTNAME        DEPTNAME                            
------ ------------ --------------- ------------------------------------
000010 CHRISTINE    HAAS            SPIFFY COMPUTER SERVICE DIV.        
000020 MICHAEL      THOMPSON        PLANNING                            
000030 SALLY        KWAN            INFORMATION CENTER                  
000050 JOHN         GEYER           SUPPORT SERVICES                    
000060 IRVING       STERN           MANUFACTURING SYSTEMS               
000070 EVA          PULASKI         ADMINISTRATION SYSTEMS              
000090 EILEEN       HENDERSON       OPERATIONS                          
000100 THEODORE     SPENSER         SOFTWARE SUPPORT                    
000110 VINCENZO     LUCCHESSI       SPIFFY COMPUTER SERVICE DIV.        
000120 SEAN         O'CONNELL       SPIFFY COMPUTER SERVICE DIV.        
000130 DELORES      QUINTANA        INFORMATION CENTER                  
000140 HEATHER      NICHOLLS        INFORMATION CENTER                  
000150 BRUCE        ADAMSON         MANUFACTURING SYSTEMS               
000160 ELIZABETH    PIANKA          MANUFACTURING SYSTEMS               
000170 MASATOSHI    YOSHIMURA       MANUFACTURING SYSTEMS               
000180 MARILYN      SCOUTTEN        MANUFACTURING SYSTEMS               
000190 JAMES        WALKER          MANUFACTURING SYSTEMS               
000200 DAVID        BROWN           MANUFACTURING SYSTEMS               
000210 WILLIAM      JONES           MANUFACTURING SYSTEMS               
000220 JENNIFER     LUTZ            MANUFACTURING SYSTEMS               
000230 JAMES        JEFFERSON       ADMINISTRATION SYSTEMS              
000240 SALVATORE    MARINO          ADMINISTRATION SYSTEMS              
000250 DANIEL       SMITH           ADMINISTRATION SYSTEMS              
000260 SYBIL        JOHNSON         ADMINISTRATION SYSTEMS              
000270 MARIA        PEREZ           ADMINISTRATION SYSTEMS              
000280 ETHEL        SCHNEIDER       OPERATIONS                          
000290 JOHN         PARKER          OPERATIONS                          
000300 PHILIP       SMITH           OPERATIONS                          
000310 MAUDE        SETRIGHT        OPERATIONS                          
000320 RAMLAL       MEHTA           SOFTWARE SUPPORT                    
000330 WING         LEE             SOFTWARE SUPPORT                    
000340 JASON        GOUNOT          SOFTWARE SUPPORT                    
200010 DIAN         HEMMINGER       SPIFFY COMPUTER SERVICE DIV.        
200120 GREG         ORLANDO         SPIFFY COMPUTER SERVICE DIV.        
200140 KIM          NATZ            INFORMATION CENTER                  
200170 KIYOSHI      YAMAMOTO        MANUFACTURING SYSTEMS               
200220 REBA         JOHN            MANUFACTURING SYSTEMS               
200240 ROBERT       MONTEVERDE      ADMINISTRATION SYSTEMS              
200280 EILEEN       SCHWARTZ        OPERATIONS                          
200310 MICHELLE     SPRINGER        OPERATIONS                          
200330 HELENA       WONG            SOFTWARE SUPPORT                    
200340 ROY          ALONZO          SOFTWARE SUPPORT                    
-      -            -               BRANCH OFFICE H2                    
-      -            -               BRANCH OFFICE I2                    
-      -            -               BRANCH OFFICE G2                    
-      -            -               DEVELOPMENT CENTER                  
-      -            -               BRANCH OFFICE F2                    
-      -            -               BRANCH OFFICE J2                    
99999  killkill     Huang           -   

转载于:https://www.cnblogs.com/killkill/archive/2010/09/17/1829723.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/17621.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

pickle.load,pickle.dump构建Coco数据集labels的pickle文件

1. 效果图 write pickle: coco_classes.pickle done loading: coco_classes.pickle [person, bicycle, car, motorcycle, airplane, bus, train, truck, boat, traffic light, fire hydrant, stop sign, parking meter, bench, bird, cat, dog, horse, sheep, cow, elephant, …

数据结构--树和二叉树

文章目录树和二叉树树1.树的定义2.树的逻辑表示3.树的基本术语:4.树的性质5.树的基本运算二叉树二叉树的存储结构二叉树的遍历树和二叉树 树 1.树的定义 2.树的逻辑表示 树形表示法文氏图表示法凹入图表示法括号表示法3.树的基本术语: 1‘结点的度&am…

使用Keras训练Lenet网络来进行手写数字识别

使用Keras训练Lenet网络来进行手写数字识别 这篇博客将介绍如何使用Keras训练Lenet网络来进行手写数字识别。 LeNet架构是深度学习中的一项开创性工作,演示了如何训练神经网络以端到端的方式识别图像中的对象(即不必进行特征提取,网络能够从…

关闭Windows 7中的 Program Compatibility Assistant

感觉微软总喜欢把简单问题复杂化。安装几个小软件也老是弹出这样的对话框: 然后点击“What settings are applied?”,看到帮助中一段: 提示我在组策略里能够关闭这个烦人的程序兼容性助手,却没有明说,故意卖关子呢。那…

数据结构--DFS

文章目录排列数字n皇后问题方法一方法二排列数字 给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。 现在,按照字典序将所有的排列方法输出。 利用DFS解决全排列问题 dfs 最重要的是搜索顺序。用什么顺序遍历所有方案。 对于全…

使用Python,OpenCV沿着轮廓寻找极值点

使用Python,OpenCV沿着轮廓寻找极值点 这篇博客将介绍如何使用Python,OpenCV沿着轮廓寻找极值点,找到最北、最南、最东和最西(x,y)坐标。虽然这项技能本身并不有用,但它通常被用作更高级计算机视觉应用程序的预处理步骤。这种应用的一个很好的例子是手势识别(hand ges…

图像识别-opencv

文章目录基本处理基本处理 读取图像 存储图像 import cv2 color_imgcv2.imread(test.png) print(color_img.shape)# 读取单通道 gray_imgcv2.imread(test.png,cv2.IMREAD_GRAYSCALE) print(gray_img.shape)#把单通道图像保存后,再读取,仍然是3通道&…

opencv学习笔记(二)

文章目录绘制几何图形获取并修改图像中的像素点算术操作图像的混合绘制几何图形 ‘’’ 1’绘制直线 2‘绘制圆形 3’绘制矩形 4‘向图像中添加文字 5’效果展示 import cv2 import numpy as np import cv2 as cv import matplotlib.pyplot as plt imgnp.zeros((512,512…