外联结也是通过 ON 子句的联结键将两张表进行联结,并从两张表中同时选取相应的列的。
●外联结要点① ——选取出单张表中全部的信息
与内联结的结果相比,不同点显而易见,那就是结果的行数不一样。内联结只能选取出同时存在于两张表中的数据,相反,对于外联结来说,只要数据存在于某一张表当中,就能够读取出来。
在实际的业务中,例如想要生成固定行数的单据时,就需要使用外联结。
外联结名称的由来也跟 NULL 有关,即“结果中包含原表中不存在(在原表之外)的信息”。相反,只包含表内信息的联结也就被称为内联结了。
●外联结要点② ——每张表都是主表吗?
外联结还有一点非常重要,那就是要把哪张表作为主表。最终的结果中会包含主表内所有的数据。
指定主表的关键字是 LEFT 和 RIGHT。顾名思义,使用 LEFT 时 FROM 子句中写在左侧的表是主表,使用 RIGHT时右侧的表是主表。
左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
当希望改变外部连接结果中的 NULL 时,COALESCE函数是唯一的选择。