SQL进阶教程1-5 用外连接进行行列转换之 列转行

 

实例:

  

  将上述表转换为如下格式:

  

 

  解决方法:创建视图存储子女信息表中的所有子女:

CREATE VIEW Children(child)
AS SELECT child_1 FROM Personnel
UNION
SELECT child_2 FROM Personnel
UNION
SELECT child_3 FROM Personnel;
child

 

SELECT EMP.employee, CHILDREN.child
FROM personnel EMP LEFT JOIN CHILDREN 
ON CHILDREN.child IN (EMP.child_1, EMP.child_2, EMP.child_3)

   在外连接中,使用IN谓词指定,当表Personnel里‘child_1’ 'child_2'  'child_3'列的名字存在于children视图里时,返回该名字,否则返回NULL。

  可见外连接的连接条件不一定是等值连接,也可以使用IN这样的谓词。

posted @ 2019-07-22 16:53  Garcia11  阅读(194)  评论(0)    收藏  举报