`

sql语法:inner join on, left join on, right join on详细使用方法

 
阅读更多
inner join(等值连接) 只返回两个表中联结字段相等的行


left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录



INNER JOIN 语法:



INNER JOIN 连接两个数据表的用法:


SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号



INNER JOIN 连接三个数据表的用法:


SELECT * FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号



INNER JOIN 连接四个数据表的用法:


SELECT * FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN

表4 ON Member.字段号=表4.字段号



INNER JOIN 连接五个数据表的用法:


SELECT * FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号



连接六个数据表的用法:略,与上述联接方法类似,大家举一反三吧:)



注意事项:

在输入字母过程中,一定要用英文半角标点符号,单词之间留一半角空格;
在建立数据表时,如果一个表与多个表联接,那么这一个表中的字段必须是“数字”数据类型,而多个表中的相同字段必须是主键,而且是“自动编号”数据类型。否则,很难联接成功。
代码嵌套快速方法:如,想连接五个表,则只要在连接四个表的代码上加一个前后括号(前括号加在FROM的后面,后括号加在代码的末尾即可),然后在后括号后面继续添加“INNER JOIN 表名X ON 表1.字段号=表X.字段号”代码即可,这样就可以无限联接数据表了:)

1.理论
只要两个表的公共字段有匹配值,就将这两个表中的记录组合起来。

个人理解:以一个共同的字段求两个表中符合要求的交集,并将每个表符合要求的记录以共同的字段为牵引合并起来。

语法

select * FROM table1 INNER JOIN table2 ON table1 . field1 compopr table2 . field2

INNER JOIN 操作包含以下部分:

部分 说明

table1, table2 要组合其中的记录的表的名称。
field1,field2 要联接的字段的名称。如果它们不是数字,则这些字段的数据类型必须相同,并且包含同类数据,但是,它们不必具有相同的名称。
compopr
任何关系比较运算符:“=”、“<”、“>”、“<=”、“>=”或者“<>”。     
说明

可以在任何 FROM 子句中使用 INNER JOIN 操作。这是最常用的联接类型。只要两个表的公共字段上存在相匹配的值,Inner 联接就会组合这些表中的记录。

可以将 INNER JOIN 用于 Departments 及 Employees 表,以选择出每个部门的所有雇员。而要选择所有部分(即使某些部门中并没有被分配雇员)或者所有雇员(即使某些雇员没有分配到任何部门),则可以通过 LEFT JOIN 或者 RIGHT JOIN 操作来创建外部联接。

如果试图联接包含备注或 OLE 对象数据的字段,将发生错误。

可以联接任何两个相似类型的数字字段。例如,可以联接自动编号和长整型字段,因为它们均是相似类型。然而,不能联接单精度型和双精度型类型字段。

下例展示了如何通过 CategoryID 字段联接 Categories 和 Products 表:

SELECT CategoryName, ProductName

FROM Categories INNER JOIN Products

ON Categories.CategoryID = Products.CategoryID;

在前面的示例中,CategoryID 是被联接字段,但是它不包含在查询输出中,因为它不包含在 SELECT 语句中。若要包含被联接字段,请在 SELECT 语句中包含该字段名,在本例中是指 Categories.CategoryID。

也可以在 JOIN 语句中链接多个 ON 子句,请使用如下语法:

SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2 OR
ON table1.field3 compopr table2.field3;

也可以通过如下语法嵌套 JOIN 语句:

SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOIN [( ]tablex [INNER JOIN ...)]
ON table3.field3 compopr tablex.fieldx)]
ON table2.field2 compopr table3.field3)
ON table1.field1 compopr table2.field2;

LEFT JOIN 或 RIGHT JOIN 可以嵌套在 INNER JOIN 之中,但是 INNER JOIN 不能嵌套于 LEFT JOIN 或 RIGHT JOIN 之中。


2.操作实例

表A记录如下:
aID               aNum
1                  a20050111
2                  a20050112
3                  a20050113
4                  a20050114
5                  a20050115

表B记录如下:
bID               bName
1                   2006032401
2                  2006032402
3                  2006032403
4                  2006032404
8                  2006032408


实验如下:
1.left join

sql语句如下:
select * from A
left join B
on A.aID = B.bID

结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
5                   a20050115                NULL              NULL
(所影响的行数为 5 行)

结果说明:
               left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
NULL           NULL                          8                     2006032408
(所影响的行数为 5 行)
结果说明:
        仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.


3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID

结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404

结果说明:
        很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.  还有就是inner join 可以结合where语句来使用 如:   select * from A innerjoin B on A.aID = B.bID where b.bname='2006032401' 这样的话 就只会放回一条数据了
分享到:
评论

相关推荐

    SQL中的left outer join,inner join,right outer join用法详解

    * FULL OUTER JOIN:LEFT OUTER 和 RIGHT OUTER 中所有行的超集。 内连接(Inner Join) 内连接是最常见的一种连接,它也被称为普通连接,而 E.FCodd 最早称之为自然连接。例如: SELECT * FROM t_institution i ...

    join on 语句及扩展

    1. INNER JOIN: INNER JOIN返回两个表中匹配的记录。这意味着如果某个记录在其中一个表中没有对应的匹配项,那么这个记录就不会出现在结果集中。基本语法如下: ```sql SELECT columns FROM table1 INNER JOIN table...

    关于SQL 中的inner join的使用

    本文详细介绍了 SQL 中 INNER JOIN 的基本概念、语法结构及其应用场景,并通过具体的案例分析了如何有效地使用 INNER JOIN 来查询数据。此外,还探讨了 GROUP BY 和 HAVING 子句的应用,以及 SUM 和 COUNT 聚合函数...

    MySQL JOIN 语法说明与 INNER JOIN 语法用法实例.docx

    本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...

    关于sql的left join,right join,inner join,outerjoin

    总之,LEFT JOIN、RIGHT JOIN、INNER JOIN和OUTER JOIN是SQL语言中的核心部分,理解和熟练运用它们对于任何数据库开发人员都至关重要。通过不断的实践和学习,你可以更好地掌握这些JOIN类型,并在解决复杂数据查询...

    (Left join , Right Join, Inner Join)用法详解

    本文将详细介绍三种常见的连接类型:Left Join、Right Join 和 Inner Join,并通过具体的例子来帮助大家理解这些连接的具体应用。 #### 二、Left Join Left Join(也称为 Left Outer Join)是从左表(即第一个被...

    SQL 语法 SQL 总结 SQL教程

    SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Union SQL Select Into SQL Create DB SQL Create Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key ...

    SQL left join

    在本文中,我们将详细介绍SQL Left Join的使用方法、特点和区别,以及与Right Join和Inner Join的比较。 一、SQL Left Join的定义和使用 SQL Left Join也称为左外连接,它可以将左表中的所有记录与右表中的记录...

    sql join( inner join, outer join) 分析

    至于标签“源码”和“工具”,这可能暗示在某些数据库管理系统(如MySQL、Oracle、SQL Server等)中实现JOIN操作的特定语法,或者可能涉及到使用某种查询工具(如SQL Developer、SSMS等)来编写和执行JOIN查询。...

    SQL中inner join、outer join和cross join的区别

    根据不同的连接方式,`JOIN`可以分为几种类型,包括`INNER JOIN`、`OUTER JOIN`(左外联接`LEFT JOIN`、右外联接`RIGHT JOIN`以及全外联接`FULL JOIN`)和`CROSS JOIN`。每种类型的`JOIN`都有其独特的应用场景和特点。...

    数据库关联查询(left,right,inner join)

    本文将通过通俗易懂的方式,详细介绍左连接(Left Join)、右连接(Right Join)以及内连接(Inner Join)这三种最常见的关联查询方式。 #### 1. 内连接(Inner Join) 内连接是最常用的关联查询方式之一,它的...

    INNERJOIN实例.pdf

    这种嵌套的方式可以处理更复杂的连接逻辑,但需要注意的是,INNER JOIN不能直接嵌套在LEFT JOIN或RIGHT JOIN中,因为LEFT JOIN和RIGHT JOIN会包含不匹配的记录,而INNER JOIN只返回匹配的。 LEFT JOIN(左连接)和...

    sql语句子查询大全[借鉴].pdf

    子查询可以在 WHERE 子句、FROM 子句和 HAVING 子句中使用,今天我们来详细讲解 left join、right join 和 inner join 的差异。 一、LEFT JOIN LEFT JOIN 运算符用于在 FROM 子句中组合来源表的记录。使用 LEFT ...

    sql语法资料.zip

    - JOIN类型:INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN等,用于合并来自多个表的数据。 在“sql语法资料.zip”中,可能包含的文件可能有SQL基础教程、进阶指南、实战案例、练习题集和答案解析等,这些都是帮助...

    inner join and outer join.pdf

    ### Inner Join 和 Outer Join 的详细解析 #### 一、引言 在数据库管理与查询语言(如 SQL)中,连接(Join)是一项重要的技术,用于从两个或多个表中提取数据,并基于某些条件将这些数据合并在一起。连接类型主要...

    informix SQL 语法指南

    - **联接操作**:包括 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 等,用于从两个或多个表中检索数据。 - **事务管理**:使用 `BEGIN TRANSACTION`、`COMMIT` 和 `ROLLBACK` 语句来控制事务边界。 - **视图**:使用 `...

    sql学习

    ### SQL学习:深入理解INNER JOIN、LEFT JOIN与RIGHT JOIN #### 一、SQL基础概念介绍 SQL(Structured Query Language)是一种专门用来管理关系数据库的标准语言。通过SQL,我们可以执行诸如查询、更新、删除等...

    SQL语法使用详细解析

    本教程将按照章节深入浅出地解析SQL语法的各个方面,帮助读者掌握这个强大的工具。 1. SQL基础 SQL的基础包括数据类型、变量、常量以及基本的查询操作。在SQL中,数据类型主要包括数值型(如INT, FLOAT)、字符串...

    SQL语法大全中文版.doc

    - 联接(JOIN)操作:INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN用于合并多个表中的数据,根据相关列进行匹配。 5. 高级SQL: - 子查询:嵌套SQL查询,可以在SELECT、FROM或WHERE子句中使用,用于获取满足...

    oracle-join用法

    3. RIGHT JOIN:与LEFT JOIN相反,RIGHT JOIN会返回所有t2表中的记录,t1中没有匹配的部分填充为NULL。这确保t2中的每一行至少在结果中出现一次。 4. FULL JOIN:FULL JOIN会返回所有t1和t2的记录,无论是否有匹配...

Global site tag (gtag.js) - Google Analytics