sql基础之表关联

来源:互联网 发布:图像领域的经典算法 编辑:程序博客网 时间:2024/06/06 05:58
  1. 左连接:left join
    下面有三张表A,B
    A表
    这里写图片描述
    B表
    B表
    select * from A a1 LEFT JOIN B b1 on a1.a_id=b1.a_id
    这里写图片描述
    总结:
    左连接就是先把left join 左边的表(A)的所有记录先显示出来,然后再根据on后面的条件匹配另一张表(B),但是如果说匹配到多条数据,然后就会把表A的数据复制一遍和后面表的数据一起显示出来。其次如果A表的数据多,b表没有就用null来补齐。

    当然也可以在左连接之后再左连接。
    如:select * from b a1 LEFT JOIN A b1 on a1.a_id=b1.a_id LEFT JOIN A a2 on a1.create_by=a2.a_id
    这里写图片描述
    如果说第二次连接后面条件不满足条件就显示空

  2. 右连接
    select * from A a1 RIGHT JOIN B b1 on a1.a_id=b1.create_by
    这里写图片描述
    总结:而右连接则是刚好相反。先显示右面在来匹配左面。没有则显示空

    多个右连接的执行顺序
    select * from A a1 RIGHT JOIN B b1 on a1.a_id=b1.create_by RIGHT JOIN B b2 on b2.b_id=b1.a_id
    这里写图片描述

select * from A a1 RIGHT JOIN B b1 on a1.a_id=b1.create_by RIGHT JOIN B b2 on b2.b_id=b1.a_id
RIGHT JOIN A a2 on a2.a_id=a1.

这里写图片描述
总结:多表的执行顺序是,A和B先组成成一个表,再与另外的B2表进行新的右关联查询,多个以此类推

  1. 内关联
    select * from A a1 INNER JOIN B b1 on a1.a_id=b1.a_id
    这里写图片描述
    总结: inner join并不以谁为基础,它只显示符合条件的记录.
    使用场景:
    LEFT JOIN操作用于在任何的 FROM 子句中,来组合第一张表的数据。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
    语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
    说明:table1, table2参数用于指定要将记录组合的表的名称。
    field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
    compopr参数指定关系比较运算符:”=”, “<”, “>”, “<=”, “>=” 或 “<>”。
原创粉丝点击