SqlServer中的Join操作
2006-06-20 10:15
183 查看
SqlServer中的Join包括inner join和outer join
语法
FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
INNER JOIN 运算可分为以下几个部分:
说明
可以在 FROM 子句中使用INNER JOIN运算。.这是最普通的联接类型。只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。
例:Select * from Tb1 inner join Tb2 on Tb1.id=Tb2.id and Tb1.type='水果'
语法
FROM表1 [ LEFT | RIGHT ] JOIN表2
ON 表1.字段1 compopr 表2. 字段2
LEFT JOIN 及 RIGHT JOIN 运算可分为以下几个部分:
说明
用 LEFT JOIN 运算 创建左边外部联接.左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
用RIGHT JOIN 运算 创建 右边外部联接.右边外部联接将包含了从第二个(右边)开始的两个表中的全部记录,即使在第一个(左边)表中并没有匹配值的记录。
例:Select * Form Tb1 left join Tb2 on Tb1.id=Tb2.id
说明:查询Tb1中所有记录,并且查询出Tb1.id=Tb2.id的记录 (这是左外连接,右外连接则相反)
注意
欲创建只包含联接字段中数据相同的记录的查询,请用 INNER JOIN 运算。
在 INNER JOIN 之中可以写一个嵌套的 LEFT JOIN 或一个 RIGHT JOIN,但是在一个 LEFT JOIN 或一个 RIGHT JOIN 之中不能写嵌套的 INNER JOIN。请参阅 INNER JOIN 主题中有关使用嵌套的讨论,从其中可获知如何在其它联接中编写嵌套联接的信息。
可以链接多个 ON 子句。若需更多信息,请参阅在 INNER JOIN 主题中的子句链接的讨论。
若试图联接包含 Memo或 OLE Object数据的字段,会导致错误。即数据类型要能匹配,数据类型都不匹配怎么比较条件嘛
INNER JOIN 运算
组合两个表中的记录,只要在公共字段之中有相符的值。语法
FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
INNER JOIN 运算可分为以下几个部分:
部分 | 说明 |
---|---|
table1, table2 | 记录被组合的表的名称。 |
field1, field2 | 被联接的字段的名称。若它们不是由数字构成的,则这些字段必须为相同的数据类型并包含同类数据,但它们无须具有相同的名称。 |
compopr | 任何的关系比较运算子:"=," "<," ">," "<=," ">=," 或 "<>." |
可以在 FROM 子句中使用INNER JOIN运算。.这是最普通的联接类型。只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。
例:Select * from Tb1 inner join Tb2 on Tb1.id=Tb2.id and Tb1.type='水果'
LEFT JOIN 和 RIGHT JOIN 运算
用于 FROM 子句时,把源表记录组合起来。语法
FROM表1 [ LEFT | RIGHT ] JOIN表2
ON 表1.字段1 compopr 表2. 字段2
LEFT JOIN 及 RIGHT JOIN 运算可分为以下几个部分:
部分 | 说明 |
---|---|
table1, table2 | 记录被组合的表的名称。 |
field1, field2 | 被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。 |
compopr | 任何的关系比较运算子:"=," "<," ">," "<=," ">=," 或 "<>." |
用 LEFT JOIN 运算 创建左边外部联接.左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
用RIGHT JOIN 运算 创建 右边外部联接.右边外部联接将包含了从第二个(右边)开始的两个表中的全部记录,即使在第一个(左边)表中并没有匹配值的记录。
例:Select * Form Tb1 left join Tb2 on Tb1.id=Tb2.id
说明:查询Tb1中所有记录,并且查询出Tb1.id=Tb2.id的记录 (这是左外连接,右外连接则相反)
注意
欲创建只包含联接字段中数据相同的记录的查询,请用 INNER JOIN 运算。
在 INNER JOIN 之中可以写一个嵌套的 LEFT JOIN 或一个 RIGHT JOIN,但是在一个 LEFT JOIN 或一个 RIGHT JOIN 之中不能写嵌套的 INNER JOIN。请参阅 INNER JOIN 主题中有关使用嵌套的讨论,从其中可获知如何在其它联接中编写嵌套联接的信息。
可以链接多个 ON 子句。若需更多信息,请参阅在 INNER JOIN 主题中的子句链接的讨论。
若试图联接包含 Memo或 OLE Object数据的字段,会导致错误。即数据类型要能匹配,数据类型都不匹配怎么比较条件嘛
相关文章推荐
- Spark算子:RDD键值转换操作(4)–cogroup/join
- sqlserver操作摘录
- 重温sql语句中的join操作
- EF的 JOIN操作
- oracle,mysql,sqlserver--java对日期字段的操作
- Oracle表连接操作——Hash Join(哈希连接)
- asp + sqlserver 执行存储过程返回记录集报对象关闭时不允许操作
- c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)
- 一些sqlserver时间的操作
- 使用mapreduce实现多表连接join操作
- c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(二)
- 以前进行的程序安装创建了挂起的文件操作(SqlServer2000或SqlServer 2000 SP4补丁安装) .
- Sqlserver 2000 和 2005 在 "backup log" 操作方面的一点区别,很隐蔽的
- sqlserver如何读写操作windows系统的文件
- SqlServer的那些常用操作(一)
- MapReduce实现基本SQL操作的原理-join和group by,以及Dinstinct
- 关于sqlserver中xml数据的操作
- Spark 实践 - RDD 的 join操作之需要注意的事项 - RDD为空的join操作
- sqlserver操作练习笔记
- Hadoop之使用python实现数据集合间join操作