SQLSERVER 的联接查询写法

Posted 你的法拉利呢?

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 资料表的资料。

以上是关于SQLSERVER 的联接查询写法的主要内容,如果未能解决你的问题,请参考以下文章

数据库(比如MYSQL) ,表连结查询与子查询哪个效率高些? 为啥

联接 (SQL Server)

SQL Server 2005 - 内部联接的顺序

带有内部联接的 SQL 更新查询语法

sqlserver数据库多表联合查询

关于sqlserve2000和sqlserver2005以后版本配置连接池的一些思路