SQLSERVER 的联接查询写法
1.内连接
语法:【JOIN、INNER JOIN】
作用:两个表相连,加上ON匹配两个表的共同条件。
实例1:
SELECT tb_o_i.* FROM tb_o_i INNER JOIN tb_o_ig ON tb_o_i.c_id=tb_o_ig.c_id AND tb_o_i.c_provider='00996'
实例2:
SELECT tb_o_i.* FROM tb_o_i join tb_o_ig ON tb_o_i.c_id=tb_o_ig.c_id WHERE tb_o_i.c_provider='00996'
2.左连接
语法:【LEFT JOIN、LEFT OUTER JOIN】
作用:指的是首先取出左边表中所有数据,然后再加上ON与两个表共同条件匹配的的数据。
实例3:
SELECT tb_o_i.* FROM tb_o_i LEFT JOIN tb_o_ig ON tb_o_i.c_id=tb_o_ig.c_id WHERE tb_o_i.c_provider='00996'
注意:ON后面只能跟一个关联条件,把之后的条件都加到where里面,下面这种写法是错误,因为第二条件on已经不起作用了)
实例4:
SELECT tb_o_i.* FROM tb_o_i LEFT JOIN tb_o_ig ON tb_o_i.c_id=tb_o_ig.c_id and tb_o_i.c_provider='00996'
3.右连接
语法:【RIGHT JOIN、RIGHT OUTER JOIN】
作用:指的是首先取出右边表中所有数据,然后再加上ON与两个表共同条件匹配的的数据。
实例5:
SELECT tb_o_i.* FROM tb_o_i RIGHT JOIN tb_o_ig ON tb_o_i.c_id=tb_o_ig.c_id WHERE tb_o_i.c_provider='00996'
4.全连接
语法:【FULL JOIN、FULL OUTER JOIN】
作用:完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值,如果表之间有匹配行,则整个结果集行包含基表的数据值。
注意:语法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本质上, Outer Join 是 inclusive, 叫它做包容性吧!
不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查询结果会包含所有 Left 资料表的资料, 颠倒过来讲, Right Outer Join 的查询就会包含所有 Right 资料表的资料。