• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL中的left join right join
    以下是它们的共同点:
    1. 关于左右表的概念。左表指的是在SQL语句中排在left join左边的表,右表指的是排在left join右边的表。
    2. 在拼成的大表中,左表排在左边,右表排在右边。
    3. on条件语句最好用=号对两表相应的主外键进行连接。当然,也可以用其他操作符,如>, , 来连接两表的任一字段,此时的关系将非常复杂,连接后的记录数也随之而变得不确定。如果在一些特殊的场合中需要用到这种方式,必须通过简单的实例加以确认,否则,连接结果很可能不是我们所想要的!
    4. on条件语句不能省略。
    5. 可以连锁使用join,每次使用join都令另一表与当前的表或连接的结果相连接。
    在下文中,用到了两个表,"部门"表与"组织"表,其中,"部门"表有一名为"组织编号"的外键,指向"组织"表中的主键"编号"。
    inner join
    格式:select * from 部门 inner join 组织 on 部门.组织编号 = 组织.编号
    目的:将两表中符合on条件的所有记录都找出来。
    规律:
    1. 拼出的大表记录不会增加。
    2. 如果左边与右表的关系是一对多的关系,在选出的任一记录中,假若右表有多个记录与其对应,那么,连接后的左表,主键将不再唯一。
    典型应用:将存在多关系的引用表放在左表,将存在一关系的被引用表放在右表,通过=号将主外键进行连接,通过对右表设定过滤条件,选出相应的且主键唯一的左表记录。
    备注:inner join 是默认的连接方式,可缩写为join。
    转化为where子句:
    select * from 部门, 组织 where 部门.组织编号 = 组织.编号
    left outter join
    格式: select * from 部门 left join 组织 on 部门.组织编号 = 组织.编号
    格式: select * from 组织 left join 部门 on 组织.编号 = 部门.组织编号
    目的:将左表的所有记录列出,右表中只要符合on条件的,与左表记录相拼合,不符合条件的,填以null值。
    规律:
    1. 选出所有符合条件的左表,如果左边与右表的关系是一对一的关系,则拼成的大表记录不会改变。
    如果左边与右表的关系是多对一的关系,则拼成的大表记录也不会改变。
    如果左边与右表的关系是一对多的关系,则拼成的大表记录会增加。对于每一具有一对多关系的左表记录,如果左表1:N与右表对应,那么会多出N-1条记录。例如,如果左表第一条记录1:3对应于右表,多出2条记录。如果左表第二条记录1:2对应于右表,则再多出1条记录。这样,总共多出3条记录。其他类推。
    2. 如果左边与右表的关系是一对多的关系,在选出的任一记录中,假若右表有多个记录与其对应,那么,连接后的左表,主键将不再唯一。
    3. 如果左边与右表的关系是一对多的关系,对于左表任一记录,如果右表没有记录与其相对应,则全部填以null值。
    典型应用:将存在多关系的引用表放在左表,将存在一关系的被引用表放在右表,通过对右表设定过滤条件,选出相应的且主键唯一的左表记录。
    备注:left outter join可用left join代替。在有些数据库中,如HSqlDb, 只能使用left join而不能使用left outter join。
    转化为where子句:
    select * from 部门, 组织 where 部门.组织编号 = 组织.编号
    right outter join
    格式: select * from 部门 right join 组织 on 部门.组织编号 = 组织.编号
    格式: select * from 组织 right join 部门 on 部门.组织编号 = 组织.编号
    目的:将右表的所有记录列出,左表中只要符合on条件的,与右表记录相拼合,不符合条件的,填以null值。
    规律:(与left outter join相反)
    典型应用:可转化成left outter join。例如
    select * from 组织 right join 部门 on 部门.组织编号 = 组织.编号

    select * from 部门 left join 组织 on 部门.组织编号 = 组织.编号
    的效果一样
    您可能感兴趣的文章:
    • MySQL利用profile分析慢sql详解(group left join效率高于子查询)
    • mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录
    • SQL之left join、right join、inner join的区别浅析
    • 解析sql语句中left_join、inner_join中的on与where的区别
    • sql 左连接和右连接的使用技巧(left join and right join)
    • sql left join 命令详解
    • 超详细mysql left join,right join,inner join用法分析
    • SQL 外链接操作小结 inner join left join right join
    • sql中left join的效率分析与提高效率方法
    上一篇:在sp_executesql中使用like字句的方法
    下一篇:Sql Server 数据库索引整理语句,自动整理数据库索引
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL中的left join right join SQL,中的,left,join,right,SQL,