五种关联查询

五种关联查询:

1. 交叉连接(CROSS JOIN)
2. 内连接(INNER JOIN)
3. 外连接(LEFT JOIN/RIGHT JOIN)
4. 联合查询(UNION 与 UNION ALL)
5. 全连接(FULL JOIN)

  • 交叉连接(没有任何关联条件,查询所有表)

     select * form a,b,c 
    

    或者 :

     select * from a cross join b cross join c
    
  • 内连接(多表中同时符合某种条件的数据记录的集合)

     select * from a,b where a.id = b.id
    

    或者 :

     select	* from a inner join b on a.id = b.id
    

    分析 :

     select	* from 表1 inner join 表2 on 条件
    

    内连接分为三类

    ①等值连接: on a.id = b.id
    
    ②不等值连接 : on a.id > b.id
    
    ③自连接: select * from a as a1 inner join a as a2 on a.id = a2.pid
    
    [自连接就是自己连接自己 条件id和pid]
    

INNER JOIN 可以缩写为 JOIN

  • 外连接

    左外连接:

    LEFT OUTER JOIN 缩写 LEFT JOIN

     以左表为主,先查询出左表,按照ON之后关联条件匹配右表,没有匹配到的用NULL填充
    

    右外连接:

    RIGHT OUTER JOIN 缩写 RIGHT JOIN

     以右表为主,先查询出右表,按照ON之后关联条件匹配左表,没有匹配到的用NULL填充
    
  • 联合查询

     表的数据结构一定要一样,把多个结果集集中到一起,UNION前的结果为基准
    

    union 相同的记录行会合并
    union all 不会合并重复的记录行

  • 全连接( 完整外部连接返回左表和右表中的所有行)

    mysql中不支持全连接,可以使用LEFT JOIN 和 UNION 和 RIGHT JOIN 联合使用

     select * from A left join B on A.id = b.id union select * from a right join on a.id = b.id
    

版权声明:本文为weixin_43781127原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。