MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

 更新时间:2015年12月16日 11:56:48   投稿:goldensun  
这篇文章主要介绍了MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程,表连接操作是MySQL入门学习中的基础知识,需要的朋友可以参考下

LEFT JOIN 语法用法与实例
MySQL LEFT JOIN 语法
SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录。LEFT JOIN 基本语法如下:

... FROM table1 LEFT JOIN table2 ON condition ...

MySQL LEFT JOIN 用法实例
下面是两个原始数据表:
article 文章表:

20151216115130281.png (641×129)

user 用户表:

20151216115300000.png (638×103)

我们列出所有的文章及对应的所属用户,即使没有用户的文章也列出。
SELECT ... LEFT JOIN ... ON 语句如下:

SELECT article.aid,article.title,user.username FROM article LEFT JOIN user ON article.uid = user.uid

返回查询结果如下:

20151216115324786.png (634×130)

可以看出来,与 INNER JOIN 明显的区别是,左表记录被全部取出,即使右表无对应匹配记录。
提示
这里所谓记录被“全部”取出,是相对于 INNER JOIN 的限制来说的。其实可以在上面的 SQL 语句后面加个 WHERE 条件或者 LIMIT 等关键字以同一般 SQL 语句一样对结果集做一个范围限制。
IS NULL
在上面的例子中,对于右表中没有对应匹配的数据记录,其所有的列都被置为 NULL,因此要查询这部分记录(如在上面例子中体现为查找 aid=4 这类无对应用户的文章记录),可以附加 IS NULL 条件:

SELECT article.aid,article.title,user.username FROM article LEFT JOIN user 
ON article.uid = user.uid WHERE user.uid IS NULL

RIGHT JOIN 语法用法与实例
MySQL RIGHT JOIN 语法
SQL(MySQL) RIGHT JOIN 会取得右表(table2)全部记录,即使左表(table2)并无对应匹配记录。RIGHT JOIN 基本语法如下:

... FROM table1 RIGHT JOIN table2 ON condition ...

MySQL RIGHT JOIN 用法实例
下面是两个原始数据表:
article 文章表:

20151216115403445.png (642×130)

user 用户表:

20151216115453219.png (640×103)

我们列出所有的用户,以及他们可能拥有的文章。
SELECT ... RIGHT JOIN ... ON 语句如下:

SELECT article.aid,article.title,user.username FROM article RIGHT JOIN user ON article.uid = user.uid

返回查询结果如下:

20151216115512832.png (641×130)

对比 LEFT JOIN 返回的查询结果,RIGHT JOIN 返回的结果与其刚好“相反”。
IS NULL
在上面的例子中,对于左表中没有对应匹配的数据记录,其所有的列都被置为 NULL,因此要查询这部分记录(如在上面例子中体现为查找 username=Jack 这类无对应文章的所有用户),可以附加 IS NULL 条件:

SELECT article.aid,article.title,user.username FROM article LEFT JOIN user 
ON article.uid = user.uid WHERE article.aid IS NULL

相关文章

  • MySQL删除数据Delete与Truncate语句使用比较

    MySQL删除数据Delete与Truncate语句使用比较

    在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在
    2012-09-09
  • mysql 数据类型转换的实现

    mysql 数据类型转换的实现

    这篇文章主要介绍了mysql 数据类型转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • CentOS 7下安装与配置MySQL 5.7

    CentOS 7下安装与配置MySQL 5.7

    Mysql5.7和之前版本的MySQL有一些不同,现把CentOS 7下MySQL 5.7安装、配置完整过程记下来,或许对新手来说有用。希望大家能够喜欢
    2018-01-01
  • mysql:Can''t start server: can''t create PID file: No space left on device

    mysql:Can''t start server: can''t create PID file: No space

    这篇文章主要介绍了mysql启动失败不能正常启动并报错Can't start server: can't create PID file: No space left on device问题解决方法,需要的朋友可以参考下
    2015-05-05
  • MySQL使用mysqldump实现数据完全备份

    MySQL使用mysqldump实现数据完全备份

    mysqldump是MySQL自带的备份工具,可方便实现对MySQL的备份,也可以将指定的库、表导出为SQL脚本,下面小编就来教大家如何使用mysqldump实现数据完全备份吧
    2023-07-07
  • MYSQL更新优化实录

    MYSQL更新优化实录

    本文给大家分享的是个人在对mysql数据进行刷新的时候遇到的一个效率非常低下的问题的解决全过程,主要是针对sql语句来进行优化,有查找问题的方法,有解决方法,非常的详细,小伙伴可以参考下。
    2015-08-08
  • MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析

    MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析

    在使用InnoDB存储引擎后,MySQL的ibdata1文件常常会占据大量存储空间,这里我们就为大家带来MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析:
    2016-06-06
  • mysql 8.0 安装配置方法教程

    mysql 8.0 安装配置方法教程

    这篇文章主要为大家分享了mysql 8.0安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-11-11
  • MySQL中的数据类型binary和varbinary详解

    MySQL中的数据类型binary和varbinary详解

    binary和varbinary与char和varchar类型有点类似,不同的是binary和varbinary存储的是二进制的字符串,而非字符型字符串。下面这篇文章主要给大家介绍了关于MySQL中数据类型binary和varbinary的相关资料,介绍的非常详细,需要的朋友可以参考学习。
    2017-07-07
  • 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析

    深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析

    本篇文章是对mysql "ON DUPLICATE KEY UPDATE"语法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论