sql的join

JOIN(内联接):如果表中有至少一个匹配,则返回行(注释:INNER JOIN 与 JOIN 是相同的。)

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

结果集:

LastNameFirstNameOrderNo
AdamsJohn22456
AdamsJohn24562
CarterThomas77895
CarterThomas44678

LEFTJOIN(左外联接:): 即使右表中没有匹配,也从左表返回所有的行(注释:在某些数据库中, LEFT JOIN称为 LEFT OUTER JOIN。)

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

结果集:

LastNameFirstNameOrderNo
AdamsJohn22456
AdamsJohn24562
CarterThomas77895
CarterThomas44678
BushGeorge 


RIGHTJOIN(右外联接): 即使左表中没有匹配,也从右表返回所有的行(注释:在某些数据库中, RIGHTJOIN 称为 RIGHT OUTER JOIN。)

FULLJOIN(全外联接): 只要其中一个表中存在匹配,就返回行(注释:在某些数据库中, FULL JOIN 称为 FULL OUTER 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

结果集:

LastNameFirstNameOrderNo
AdamsJohn22456
AdamsJohn24562
CarterThomas77895
CarterThomas44678
BushGeorge 
  34764


解释:联结操作的结果集也是以行为元素的,这里说的匹配,指ON后面的条件是否满足,满足则匹配。

     另外还有:CROSS JOIN:笛卡尔乘积(所有可能的行对);这种联结没有后面的ON条件,返回集合乘积的全部结果(注意:除了cross join外其他是都有on条件的)。cross join和后面没有加on的join是一样的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值