TSL语言基础 > SQL基础到TS-SQL > TS-SQL入门 > select查询语句 > join处理多表联接查询 > Left Join,Right Join,Full Join

Full Join    

  •   Full Join可以参照Left Join和Right Join,不同之处是结合了Left Join和Right Join,在在Join的结果集中增加了左右结果集中未能在Join结果集内的行,其处理规则和Left Join类同。
    典型的应用:
    如果以上的例子只有B,C结果集,而没有A结果集,B结果集为英语成绩,C为俄语成绩,那么用R:=select ["学号"],[1].["英语成绩"],[2].["俄语成绩"] from B full join C on [1].["学号"]=[2].["学号"] end;就可以合并成一个整合的成绩表,除了同时修两门外语的人有两门成绩,否则只有一门成绩有内容,而另外一门成绩为空。
    在这里,我们需要注意一点,即["学号"]的处理,由于结果中行对应的左右结果集均可能为空行,所以不能在返回中指定某个结果集的学号来返回,缺省使用字段而不带[TableOrder]可以自动在多个表中根据字段名获得一个非空的结果。
    当然,我们也可以用如下代码来替代:
      R:=select [1].["学号"]?:[2].["学号"] as "学号",[1].["英语成绩"],[2].["俄语成绩"] from B full join C on [1].["学号"]=[2].["学号"] end;
    当参与计算的表更多的时候,显然缺省["学号"]的表达方式会显得更为简洁有效。