JOIN多表联查,JOIN使用方法

SQL RIGHT JOIN 关键字

HighlanderIGHT JOIN 关键字会右表 (table_name2) 这里回来全部的行,尽管在左表 (table_name1) 中并未有相配的行。

*SQL INNER JOIN 关键字

(转自W3School相关学科:http://www.w3school.com.cn,W3School是不利的在线教程,简洁高效!)

SQL JOIN :用来依据五个或八个表中的列之间的关系,从这么些表中查询数据。

TiggoIGHT JOIN 关键字语法

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注脚:在有些数据库中, 昂科雷IGHT JOIN 称为 TiguanIGHT OUTE汉兰达 JOIN。

在表中存在起码三个佳人才辰时,INNELAND JOIN 关键字重回行。


Join和key:有时为了博取完全的结果,大家须要从七个或越多的表中获取结果。大家就需求实施join。数据库中的表可通过键将互相关系起来。主键(Primary Key)是叁个列,在这里个列中的每一行的值都以独一的。在表中,每种主键的值都以无与伦比的。那样做的目标是在不另行每一个表中的有所数据的景色下,把表间的多寡交叉捆绑在一同。

原有的表 (用在例子中的):

"Persons" 表:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" 表:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

INNE奥迪Q3 JOIN 关键字语法

上边列出分化的SQL JOIN类型,以至他们中间的差别:

请看 "Persons" 表:

右连接(RIGHT JOIN)实例

今天,大家期望列出富有的定单,以至定购它们的人 - 倘诺有的话。

您能够行使上面包车型客车 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

结果集:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
    34764

CR-VIGHT JOIN 关键字会从右表 (Orders) 这里回来全体的行,尽管在左表 (Persons) 中绝非相称的行。

SELECT column_name(s)

JOIN:表示假设表中至罕有贰个合作,则再次回到行

ID LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

FROM table_name1

LEFT JOIN:即便右表中平昔不相称,也从左表再次回到全部的行

 

INNER JOIN table_name2

RubiconIGHT JOIN:即便左表中从未相配,也从右表重回全体的行 

 

ON table_name1.column_name=table_name2.column_name

FULL JOIN:只要个中一个表中存在卓绝,就重返行

 

注释:INNEHaval JOIN 与 JOIN 是毫发不爽的。

一、inner join 关键字

 

原有的表 (用在例子中的):

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

请注意,"Id_P" 列是 Persons 表中的的主键。那意味未有两行可以具备同样的 Id_P。就算五人的人名千篇一律,Id_P 也可以分别他们。

"Persons" 表:

注明:inner join 与 join 是均等的。
原来的表(用在例子中):

接下去请看 "Orders" 表:

 

“Persons”表

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65
Id_P
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing
Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

 

 

 

 

"Orders" 表:

“Orders”表

 

 

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

 

Id_O
OrderNo
Id_P
1
77895
3
2
44678
3
3
22456
1
4
24562
1
5
34764
65

 

 

 

内连接(inner join)实例

 

内连接(INNER JOIN)实例

前日,大家盼望列出全体人的订货。能够采用下边包车型大巴select语句:

请注意,"Id_O" 列是 Orders 表中的的主键,同临时候,"Orders" 表中的 "Id_P" 列用于援引 "Persons" 表中的人,而无需采纳他们的方便姓名。

今昔,我们希望列出全体人的预购。

select Persons.LastName, Persons.FirstName, Orders.OrderNo
from Persons
inner join Orders
on Persons.Id_P=Orders.Id_P
order by Persons.LastName

请留意,"Id_P" 列把地点的八个表联系了四起。

您能够选取下边包车型大巴 SELECT 语句:

结果集:

援引五个表:我们能够通过引用三个表的主意,从七个表中获取数据:何人订购了产品,何况他们订购了什么产品?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

FROM Persons

 

结果集:

INNER JOIN Orders

INNEENVISION JOIN 关键字在表中留存起码一个男才女貌时重临行。假若 "Persons" 中的行在 "Orders" 中未有相称,就不会列出那个行。

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

ON Persons.Id_P=Orders.Id_P

 二、left join 关键字

 

ORDER BY Persons.LastName

left join 关键字会从左表(table_name1)这里回来全数的行,纵然在右表(table_name2)中尚无相称的行。

 

结果集:

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

 

 

讲授:在少数数据库中, LEFT JOIN 称为 LEFT OUTE揽胜极光 JOIN。

 

LastName
FirstName
OrderNo
Adams
John
22456
Adams
John
24562
Carter
Thomas
77895
Carter
Thomas
44678

原有的表(用在例子中的):

 

 

“Persons”表:

SQL JOIN—使用JOIN:除了那些之外上面包车型大巴艺术,大家也得以选拔首要词 JOIN 来从多个表中获取数据。要是大家期望列出全体人的订货,可以应用下边包车型大巴SELECT 语句:

INNEEscort JOIN 关键字在表中设有最少三个非常时重返行。假设 "Persons" 中的行在 "Orders" 中未有相配,就不会列出那么些行。

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

 

 

不同的SQL JOIN:除此而外大家在下边包车型客车事例中央银行使的 INNE福睿斯JOIN(内连接),大家仍是能够动用别的二种连接。下边列出了您能够采用的 JOIN 类型,以致它们中间的差异。

SQL LEFT JOIN 关键字

"Orders" 表:

1、JOIN: 若是表中有起码一个相配,则重回行

LEFT JOIN 关键字会从左表 (table_name1) 这里回来全部的行,纵然在右表 (table_name2) 中从不相称的行。

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

2、LEFT JOIN: 即便右表中尚无相称,也从左表再次回到全体的行

LEFT JOIN 关键字语法

 

3、瑞鹰IGHT JOIN: 固然左表中从未相配,也从右表再次来到全部的行

SELECT column_name(s)

明天,我们希望列出全部的人,以至他们的订货(如若有个别话)。

4、FULL JOIN: 只要个中二个表中存在特出,就重回行

FROM table_name1

能够选用下边的select语句:

INNER JOIN:在表中设有最少一个金童玉女时,INNE摩尔根Plus 4 JOIN 关键字重临行。INNEHighlanderJOIN 关键字在表中存在起码贰个配适那时候候重临行。如若 "Persons" 中的行在 "Orders" 中未有相配,就不会列出这一个行,例子在上面已经写过。

LEFT JOIN table_name2

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

LEFT JOIN:会从左表 (table_name1) 这里回来全数的行,就算在右表 (table_name2) 中一直不匹配的行。注释:在有些数据库中, LEFT JOIN 称为 LEFT OUTE奇骏 JOIN。

ON table_name1.column_name=table_name2.column_name

结果集:

当今,大家期待列出具备的人,以至她们的定购 - 假若有些话。LEFT JOIN 关键字会从左表 (Persons) 这里回来全体的行,纵然在右表 (Orders) 中绝非相称的行。您能够运用上面包车型客车 SELECT 语句:

注释:在某个数据库中, LEFT JOIN 称为 LEFT OUTEENCORE JOIN。

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

土生土养的表 (用在例子中的):

 

结果集:

"Persons" 表:

LEFT JOIN 关键字会从左表 (Persons) 那里回来全数的行,纵然在右表 (Orders) 中尚无匹配的行。

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  

 

三、right join 关键字

 

Id_P
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing

right join关键字会从右表(table_name2)这里回来全部的行,即便在坐标(table_name1)中尚无匹配的行。

 

 

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

 

"Orders" 表:

评释:在一些数据库中, 奔驰G级IGHT JOIN 称为 WranglerIGHT OUTEKuga JOIN。

 

 

原有的表(用在例子中的):

 

Id_O
OrderNo
Id_P
1
77895
3
2
44678
3
3
22456
1
4
24562
1
5
34764
65

“Persons”表:

 

 

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

RIGHT JOIN:会右表 (table_name2) 这里回来全数的行,固然在左表 (table_name1) 中从未相称的行。注释:在好几数据库中, EnclaveIGHT JOIN 称为 揽胜IGHT OUTE奥迪Q5 JOIN。

左连接(LEFT JOIN)实例

 

明天,我们意在列出全体的定单,以致定购它们的人 - 如果部分话。途锐IGHT JOIN 关键字会从右表 (Orders) 这里回来全部的行,固然在左表 (Persons) 中并未有相称的行。您能够选用上面包车型大巴 SELECT 语句:

近期,大家盼望列出装有的人,以至他们的定购 - 倘使部分话。

“Orders”表:

结果集: 

你能够采取下边包车型地铁 SELECT 语句:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65
LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
    34764

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

 

 

FROM Persons

近日,大家期待列出富有的订单,乃至定购他们的人(假若局地话)。

 

LEFT JOIN Orders

能够应用上边包车型大巴select语句:

 

ON Persons.Id_P=Orders.Id_P

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

 

ORDER BY Persons.LastName

结果集:

 

结果集:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
    34764

 

 

 

FULL JOIN:假如此中某些表存在优秀,FULL JOIN 关键字就能重临行。注释:在好几数据库中, FULL JOIN 称为 FULL OUTE兰德揽胜JOIN。

LastName
FirstName
OrderNo
Adams
John
22456
Adams
John
24562
Carter
Thomas
77895
Carter
Thomas
44678
Bush
George
 

MuranoIGHT JOIN 关键字会从右表 (Orders) 那里回来全数的行,尽管在左表 (Persons) 中未有相配的行。

于今,大家期望列出富有的人,以致他们的定单,以至具有的定单,乃至定购它们的人。FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 这里回来全部的行。倘若"Persons" 中的行在表 "Orders" 中未有相配,可能一旦 "Orders" 中的行在表 "Persons" 中未有相配,这么些行同样会列出。您能够使用上面包车型客车 SELECT 语句:

 

四、full join 关键字

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

LEFT JOIN 关键字会从左表 (Persons) 这里回来全部的行,固然在右表 (Orders) 中从来不相配的行。

假设当中某些表存在同盟,full join关键字就能重回行。

结果集:

SQL RIGHT JOIN 关键字

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2 
ON table_name1.column_name=table_name2.column_name
LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  
    34764

凯雷德IGHT JOIN 关键字会右表 (table_name2) 这里回来全体的行,就算在左表 (table_name1) 中并未有相配的行。

评释:在一些数据库中, FULL JOIN 称为 FULL OUTE宝马7系 JOIN。

 

智跑IGHT JOIN 关键字语法

原有的表(用在例子中的):

 

SELECT column_name(s)

“Persons”表:

 

FROM table_name1

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

 

RIGHT JOIN table_name2

 

 

ON table_name1.column_name=table_name2.column_name

"Orders" 表:

 

注释:在少数数据库中, ENCOREIGHT JOIN 称为 凯雷德IGHT OUTE凯雷德 JOIN。

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

 

原来的表 (用在例子中的):

 

参考:SQL JOIN

"Persons" 表:

今昔,我们期待列出富有的人,以至她们的定单,以致具备的定单,以致定购它们的人。

 

 

能够动用上边包车型大巴 SELECT 语句:

Id_P
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

 

结果集:

"Orders" 表:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  
    34764

 

 

Id_O
OrderNo
Id_P
1
77895
3
2
44678
3
3
22456
1
4
24562
1
5
34764
65

FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 这里回来全部的行。假使 "Persons" 中的行在表 "Orders" 中未有相配,恐怕只要 "Orders" 中的行在表 "Persons" 中未有相称,这一个行同样会列出。

 

 

右连接(RIGHT JOIN)实例


前日,大家希望列出装有的定单,以致定购它们的人 - 要是局地话。

 

你能够动用下边的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

RIGHT JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

结果集:

 

LastName
FirstName
OrderNo
Adams
John
22456
Adams
John
24562
Carter
Thomas
77895
Carter
Thomas
44678
 
 
34764

 

SportageIGHT JOIN 关键字会从右表 (Orders) 这里回来全体的行,即便在左表 (Persons) 中从未相称的行。

SQL FULL JOIN 关键字

设若此中有个别表存在合作,FULL JOIN 关键字就能重返行。

FULL JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

FULL JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注释:在好几数据库中, FULL JOIN 称为 FULL OUTE大切诺基 JOIN。

原始的表 (用在例子中的):

"Persons" 表:

 

Id_P
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing

 

"Orders" 表:

 

Id_O
OrderNo
Id_P
1
77895
3
2
44678
3
3
22456
1
4
24562
1
5
34764
65

 

全连接(FULL JOIN)实例

这两天,大家愿意列出具备的人,以致她们的定单,以致全数的定单,以至定购它们的人。

你可以行使上边的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

FULL JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

结果集:

 

LastName
FirstName
OrderNo
Adams
John
22456
Adams
John
24562
Carter
Thomas
77895
Carter
Thomas
44678
Bush
George
 
 
 
34764

 

FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 这里回来全体的行。假设 "Persons" 中的行在表 "Orders" 中未有相称,或然一旦 "Orders" 中的行在表 "Persons" 中没有匹配,这个行一样会列出。

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:JOIN多表联查,JOIN使用方法

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。