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

inner join(等值连接卡塔尔国只回去多个表中会集字段相等的行

left join(左联接卡塔尔(英语:State of Qatar)再次回到蕴含左表中的全数记录和右表中联合字段相等的笔录

right join(右联接卡塔尔(قطر‎重临富含右表中的全部记录和左表中联合字段相等的记录

INNER JOIN语法:

INNE中华V JOIN连接五个数据表的用法:

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

INNE福特Explorer JOIN连接四个数据表的用法:

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

INNE凯雷德 JOIN连接七个数据表的用法:

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

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

INNEEscort 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的背后,后括号加在代码的尾声就能够),然后在后括号前面继续丰硕“INNE途睿欧JOIN 表名X ON表1.字段号=表X.字段号”代码就能够,那样就能够特别联接数据表了:)

 

 

1.理论

只要四个表的国有字段有匹配值,就将那多个表中的记录组合起来。

私家明白:以二个同台的字段求五个表中切合供给的混合,并将各种表适合须要的笔录以二只的字段为牵引合併起来。

语法

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

INNEMurano JOIN操作满含以下一些:

部分

说明

table1, table2

要组合其中的记录的表的名称。

field1,field2

要联接的字段的名称。如果它们不是数字,则这些字段的数据类型必须相同,并且包含同类数据,但是,它们不必具有相同的名称。

compopr

任何关系比较运算符:“=”、“<”、“>”、“<=”、“>=”或者“<>”。

说明

能够在任何 FROM子句中利用 INNELX570 JOIN操作。这是最常用的连接类型。只要多个表的公物字段上设有相相配的值,Inner联接就能够构成那些表中的笔录。

可以将 INNE陆风X8 JOIN用于 Departments及 Employees表,以筛选出各个部门的兼具雇员。而要接纳具备片段(纵然一些单位中并不曾被分配雇员)大概持有雇员(固然一些雇员未有分配到任何部门),则能够通过 LEFT JOIN或许 奇骏IGHT
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或 QashqaiIGHT
JOIN能够嵌套在 INNE安德拉 JOIN之中,不过 INNE福睿斯 JOIN不可能嵌套于 LEFT JOIN或 奇骏IGHT
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=’二〇〇五032401’那样的话就只会放回一条数据了

 

相关文章