MySQL多表join连接查询

=Start=

缘由:

因为在大学的时候SQL学的不扎实,后来工作中也没有专门深入了解过,虽然一些常规/常见功能的SQL写的也很流畅,但是在碰到复杂场景(需要多个表各种join)的时候就不行了,有点发虚,这次趁着一个机会好好学习理解一下MySQL多表join连接查询的知识,也方便以后参考。

正文:

参考解答:

常见的 join 按照功能大致分为如下三类:

  • INNER JOIN(内连接或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

先用2张图直观的表示一下各种join的作用:

&

然后再通过一些本地环境造数据进行测试以加深影响:

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4211.html

《MySQL多表join连接查询》上有3条评论

  1. [一起学Hive]之十一-Hive中Join的类型和用法
    http://lxw1234.com/archives/2015/06/315.htm

    Hive中除了支持和传统数据库中一样的内关联、左关联、右关联、全关联,还支持LEFT SEMI JOIN和CROSS JOIN,但这两种JOIN类型也可以用前面的代替。

    注意:Hive中Join的关联键必须在ON()中指定,不能在Where中指定,否则就会先做笛卡尔积,再过滤。

    以LEFT [OUTER] JOIN关键字前面的表作为主表,和其他表进行关联,返回记录和主表的记录数一致,关联不上的字段置为NULL。
    是否指定OUTER关键字,对查询结果无影响。

  2. LEFT JOIN vs. LEFT OUTER JOIN in SQL Server
    https://stackoverflow.com/questions/406294/left-join-vs-left-outer-join-in-sql-server

    Nothing. LEFT JOIN and LEFT OUTER JOIN are equivalent. (在SQL Server中2者是等价的,其它的里面貌似也是)
    left join是left outer join的简写。

    left join 和 left outer join 的区别
    https://www.cnblogs.com/cy163/archive/2008/10/16/1312920.html

    SQL LEFT JOIN
    https://www.dofactory.com/sql/left-outer-join
    https://www.w3schools.com/sql/sql_join_left.asp

    LEFT JOIN and LEFT OUTER JOIN are the same.
    Note: In some databases LEFT JOIN is called LEFT OUTER JOIN.

    https://dba.stackexchange.com/questions/73087/mysql-which-join-is-better-between-left-outer-join-and-inner-join

发表评论

电子邮件地址不会被公开。 必填项已用*标注