SQL Server中JOIN的用法

JOIN 分为:内连接(INNER JOIN)、外连接(OUTER JOIN)。其中,外连接分为:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接(FULL OUTER JOIN),其中外连接的“OUTER”关键字可以省略不写。
例: 表A有列ID,值为: 1 2 3 4
表B有列ID,值为: 3 4 5 6
1.内连接(显示左右两表能完全匹配的数据):

select A.ID, B.ID from A INNER JOIN B ON A.ID = B.ID

结果为: 3    3 4    4
2.左外连接(显示左表所有数据,右表匹配不上的显示为NULL):

select A.ID, B.ID from A LEFT JOIN B ON A.ID = B.ID

结果为: 1    NULL 2    NULL 3    3 4    4
3.右外连接(显示右表所有数据,左表匹配不上的显示为NULL):

select A.ID, B.ID from A RIGHT JOIN B ON A.ID = B.ID

结果为: 3    3 4    4 NULL    5 NULL    6
4.全外连接(显示左右两量表所有数据,两表匹配不上的显示为NULL):

select A.ID, B.ID from A FULL OUTER JOIN B ON A.ID = B.ID

结果为: 1    NULL 2    NULL 3    3 4    4 NULL    5 NULL    6

时间: 2024-10-09 21:00:45

SQL Server中JOIN的用法的相关文章

SQL Server 中 RAISERROR 的用法(转)

在存储过程中进程会处理一些逻辑性的错误,如:将RMB转换为USD时,没有查询到想要的汇率 这个时候最好在存储过程中抛个异常,方便自己查找错误信息... 其语法如下: RAISERROR ( { msg_id | msg_str | @local_variable }                    { ,severity ,state }                    [ ,argument [ ,...n ] ]           )          [ WITH optio

SQL Server中@@ROWCOUNT的用法

SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERROR变量的值,在执行完一条语句后总是会发生变化,所以我们将他们作为判断的依据的时候应该首先保存在局部变量中.他们反映的都是紧接着的上一条语句对他们的影响! 我们通常可以通过update.insert语句并使用@@ROWCOUNT来检测是否更改了任何一些行. 下面介绍一个使用@@ROWCOUNT的实例: S

SQL Server 中 RAISERROR 的用法

raiserror  是由单词 raise error 组成     raise  增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql server 2005的帮助 ] 其语法如下: RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] 简

SQL Server 中@@IDENTITY的用法

原文地址:http://www.studyofnet.com/news/145.html 本文导读:@@IDENTITY是返回上次插入的标识值,标识值一般指的是自动增长值.但是如果想只返回插入到当前作用域中的值,则使用SCOPE_IDENTITY . 用法: 用select @@identity得到上一次插入记录时自动产生的ID 如果你使用存储过程的话,将非常简单,代码如下:SET @[email protected]@IDENTITY 说明: 在一条 INSERT.SELECT INTO 或大

sql server中substring的用法

SQL 中的 substring 函数是用来截取一个栏位资料中的其中一部分. 例如,我们需要将字符串'abdcsef'中的'abd'给提取出来,则可用substring 来实现: select substring('abdcsef',1,3) 结果: 'abd' 括号中数字'1'表示截取的起始位置是从该字符串第一个字符开始,'3'表示截取后得到的字符串长度为3个字符. 这是'substring'最基础的语法,当然,我们的需求有时候会变得比较复杂,例如以下例子: 我们只想要得到'roomno'中的

SQL server 中null的用法

在SQL中我们经常用到null值, 那么什么是NULL?如下是MSDN给出的一段简短描述(见"Null Values"):?A value of NULL indicates that the value is unknown. A value of NULL is different from an empty or zero value. No two null values are equal. Comparisons between two null values, or be

SQL Server中Merge-using的用法

在执行之前: merge into UserInfo u using chartinfo c on u.UserId=c.UserId when matched and u.UserName=c.UserName then update set u.lastUpdate=c.LastUpdate when not matched --为not matched时不能为update(没有匹配成功 当然不能update了) then insert (UserName,Sex)values('Zhang

SQL Server中JOIN的使用方法总结

JOIN 分为:内连接(INNER JOIN).外连接(OUTER JOIN).其中,外连接分为:左外连接(LEFT OUTER JOIN).右外连接(RIGHT OUTER JOIN).全外连接(FULL OUTER JOIN),其中外连接的"OUTER"关键字可以省略不写. 1.内连接(显示左右两表能完全匹配的数据): select P.ProvinceId,P.ProvinceName,C.CityName,C.ProvinceId,C.CityId from [dbo].[Ci

SQL Server中except和intersect用法

except是A集合减去B集合的结果:intersect是A集合和B集合的交集:都是返回的是非重复值,很多属性都和union类似. 还是以student为例 select * from student; select * into student1 from student; go insert into student1 values('aaa',20,'Js'),('bbb',30,'js'),('ccc',40,'sh'); go insert into student1 values('