SQL语句(inner join,left out join,right out join三者的不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句(inner join,left out join,right out join三者的不同相关的知识,希望对你有一定的参考价值。

参考技术A left
join
:左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
right
join
:右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
inner
join:
内连接,又叫等值连接,只返回两个表中连接字段相等的行。
full
join:外连接,返回两个表中的行:left
join
+
right
join
cross
join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
declare
@a
table(a
int,b
int)
declare
@b
table(a
int,b
int)
insert
@a
values(1,1)
insert
@a
values(2,2)
insert
@b
values(1,1)
insert
@b
values(3,3)
select
*
from
@a
select
*
from
@b
--左:
select
*
from
@a
Aa
left
join
@b
Bb
on
Aa.a=Bb.a
--右:
select
*
from
@a
Aa
right
join
@b
Bb
on
Aa.a=Bb.a
--内
select
*
from
@a
Aa
inner
join
@b
Bb
on
Aa.a=Bb.a
--外:
select
*
from
@a
Aa
full
join
@b
Bb
on
Aa.a=Bb.a
--交叉连接
select
*
from
@a
cross
join
@b
看了就明白了
参考技术B 就简单的说下吧,例子就不举了
首先,内连接是把两个表中相互关联的字段行全部查询出来
左连接是把左边的表数据全部查出来,没有的数据就会以null显示,
有链接和左连接刚好相反,其他都一样
不懂可以再问

SQL SERVER LEFT JOIN, INNER JOIN, RIGHT JOIN

  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行
CREATE TABLE dbo.Student
(
 Sno int  null
,Name nvarchar(23) 
)
CREATE TABLE dbo.Score
(
 Sno int 
,Score INT
)
INSERT INTO dbo.Student(Sno,Name)VALUES(1,\'Jesse\');
INSERT INTO dbo.Student(Sno,Name)VALUES(2,\'Jessca\');
INSERT INTO dbo.Student(Sno,Name)VALUES(3,\'June\');
INSERT INTO dbo.Student(Sno,Name)VALUES(4,\'Supper\');

INSERT INTO dbo.Score(Sno,Score)VALUES (1,45)
INSERT INTO dbo.Score(Sno,Score)VALUES (1,56)
INSERT INTO dbo.Score(Sno,Score)VALUES (2,100)
INSERT INTO dbo.Score(Sno,Score)VALUES (3,25)  


 查看数据:

SELECT * FROM dbo.Student
SELECT * FROM dbo.Score

  

Left Join 会显示出左边的全部数据,右边如果没有对应的值,系统默认NULL

SELECT *
FROM dbo.Student a
LEFT JOIN dbo.Score b
ON a.Sno=b.Sno

  

INNER JOIN 显示交集

SELECT *
FROM dbo.Student a
INNER JOIN dbo.Score b
ON a.Sno=b.Sno

  

right join 右表全部显示,左表没有,默认设置为NULL

SELECT *
FROM dbo.Student a
RIGHT JOIN dbo.Score b
ON a.Sno=b.Sno

  

FULL JOIN 左右边都显示,如果对方没有值得统一设置NULL

SELECT *
FROM dbo.Student a
FULL JOIN dbo.Score b
ON a.Sno=b.Sno

  

 

以上是关于SQL语句(inner join,left out join,right out join三者的不同的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中 left join,right join,inner join 的区别

SQL Left/Inner/Normal Join vs Where while 条件语句

关于SQL 查询效率问题 left join 改成 inner join union

sql left join 和 inner join 效率

sql语句中left join和inner join中的on与where的区别分析

SQL中left join on 、right join on、inner join on之间的区别