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 资料表的资料。

时间: 2024-12-25 06:27:57

SQLSERVER 的联接查询写法的相关文章

SQL语句汇总(终篇)—— 表联接与联接查询

既然是最后一篇那就不能只列出些干枯的标准语句,更何况表联接也是SQL中较难的部分,所以此次搭配题目来详细阐述表联接. 上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. 而表联接是通过笛卡尔乘积将表进行横向联接,所谓的通过笛卡尔乘积简单说就是两表的行依次相联再相加.要想更详细的理解可以百度下,毕竟本文主要是汇总SQL语句. 现在有如下两张表: 这是

SQL SERVER技术内幕之3 联接查询

JOIN表运算符对两个输入表进行操作.联接有三种基本类型:交叉联接.内联接和外联接.这三种联接的区别是它们采用的逻辑查询处理步骤各不相同,每种联接都有一套不同的步骤.交叉联接只有一个步骤----笛卡尔积;内联接有两个步骤----笛卡尔积.过滤;外联接有三个步骤----笛卡尔积.过滤.添加外部行. 3.1 交叉联接 SQL SERVER支持交叉联接的两种标准语法:ANSI SQL-92和ANSI SQL-89,推荐使用SQL-92的语法. 3.1.1 ANSI SQL-92语法 SELECT C.

特殊联接查询

除了传统的三种联接查询外,还有一些特殊的联接查询.这篇文章就将对其进行总结,主要有以下几种特殊的联接查询. 1,组合联接查询 2,不等联接查询 3,多表联接查询 组合联接查询 组合联接就是联接条件涉及联接两边的多个列的查询.当需要根据主键-外键关系来联接两个表,而且主外键关系是组合的(即关系基于多个列)时,通常就要使用组合联接. 例如,假设dbo.Table2表上定义了两个外键(col1列和col2列),引用了dbo.Table1表的col1和col2列,现在要写一个根据主外键关系来联接两个表的

SqlServer中循环查询结果集

declare @id int,@value nvarchar(100); begin declare c_test_main cursor fast_forward for select hps_hpId,hps_time from hospitalPermSupp where hps_usId=1; open c_test_main;--打开游标 while 1=1 --开始循环 begin fetch next from c_test_main into @id,@value; --赋值到

sqlserver中怎么查询字段为空的记录

sqlserver中怎么查询字段为空的记录的两种方法:

【T-SQL基础】02.联接查询

概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL基础]07.数据修改 [T-SQL基础]08.事务和并发 [T-SQL基础]09.可编程对象 本篇主要是对多表查询基础的总结. 查询语句的FROM字句在逻辑上是第一条要处理的字句,在FROM

Oracle、MySql、SQLServer 数据分页查询

Oracle.MySql.SQLServer 数据分页查询 摘自:http://www.cnblogs.com/wangyong/p/3396333.html 近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句 * firstIndex:

SQLServer访问Oracle查询性能问题解决

原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT * FROM LINKED_NAME..A

第三章 联接查询 T-SQL语言基础

联接查询 sql server 2008支持四种表运算符----JOIN,APPLY,PIVOT,UNPIVOT. JOIN表运算符是ANSI标准,而APPLY,PIVOT,UNPIVOT是T-SQL对标准的扩展 JOIN表运算符,联接有三种基本类型:交叉联接,内联接和外联接. 交叉联接只有一个步骤:笛卡尔积;内联接有两个步骤:笛卡尔积和过滤;外联接有三个步骤:笛卡尔积,过滤,添加外部行. (逻辑查询处理和物理查询处理的不同!) 3.1 交叉联接 (cross join) 最简单的联接,只实现了