SQL中如何使用JOIN连接表

sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)四种方式。

这里写图片描述

一、inner join(内连接)

在两张表进行连接查询的时候,会保留两张表完全匹配ON后查询条件的结果集。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
查询结果集: 

这里写图片描述

此种连接方式Orders表中Id_P字段在Persons表中找不到匹配的,则不会列出来。 

二、left join(左连接)

在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。没有匹配的记录用Null表示。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
查询结果如下: 

这里写图片描述 

可以看到,左表(Persons表)中LastName为Bush的行的Id_P字段在右表(Orders表)中没有匹配,但查询结果仍然保留该行。 

三、right join(右连接)

在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。

四、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和right join的并集。

图片示例

sql 连接之后 可以在 on后面跟多个筛选查询条件,有利于提高查询需要的数据,比在where后面更加提高查询速度,需要注意的是on后查询条件如果A左连接B,ON后跟着B表的查询条件如果B表没有数据将返回null,如果是where后跟着查询条件,如果没有数据则不会返回数据。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P AND OrderNo = '123'
ORDER BY Persons.LastName
查询结果如下: 
  
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
WHERE OrderNo = '123'
ORDER BY Persons.LastName

查询结果为空! 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值