您的位置:首页 > 数据库

SqlServer中的Join操作

2006-06-20 10:15 183 查看
SqlServer中的Join包括inner join和outer join

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数据的字段,会导致错误。即数据类型要能匹配,数据类型都不匹配怎么比较条件嘛
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: