详解MySQL LEFT/RIGHT JOIN:外连接

MySQL的LEFT JOIN和RIGHT JOIN都是外连接(Outer Join)的一种形式,意味着即使没有匹配的行,也会返回从另一张表(左连接的情况是左表,右连接的情况是右表)中的所有行。

LEFT JOIN

左连接(LEFT JOIN)返回左表中的所有行,以及右表中的匹配行。如果右表中没有与左表中的行匹配的行,则返回NULL值。

语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

示例:

假设有两张表,一个是用户表(users),一个是评论表(comments),分别如下:

users表:

id name
1 John
2 Peter
3 Mary

comments表:

id comment user_id
1 Good 1
2 Great 1
3 Nice 3

查询用户表与评论表的LEFT JOIN结果:

SELECT users.name, comments.comment
FROM users
LEFT JOIN comments
ON users.id = comments.user_id;

输出结果:

name comment
John Good
John Great
Mary Nice
Peter NULL

输出结果中,左连接结果显示了users表的全部三行与comments表的匹配行,以及users表中Peter行没有comment匹配的NULL值。

RIGHT JOIN

右连接(RIGHT JOIN)返回右表中的所有行,以及左表中的匹配行。如果左表中没有与右表中的行匹配的行,则返回NULL值。

语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

示例:

与之前的例子类似,现在将查询语句中的LEFT JOIN换成RIGHT JOIN,来查询匹配用户表和评论表的右连接结果:

SELECT users.name, comments.comment
FROM users
RIGHT JOIN comments
ON users.id = comments.user_id;

输出结果:

name comment
John Good
John Great
Mary Nice
NULL Love

输出结果中,右连接结果显示了comments表的全部三行与users表的匹配行,以及comments表中Love行没有对应匹配的NULL值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解MySQL LEFT/RIGHT JOIN:外连接 - Python技术站

(0)
上一篇 2023年3月9日
下一篇 2023年3月9日

相关文章

  • mysql 两表联查分页排序效率优化

    数据库中有两张表 t1 存储消息信息 +———–+——————+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +———–+——————+——+-…

    MySQL 2023年4月12日
    00
  • Trafodion和Virtuoso的区别

    Trafodion和Virtuoso都是数据库管理系统,但它们有很大的不同之处。 Trafodion是一个基于Apache Hadoop的开源的分布式SQL数据库管理系统。它支持传统的SQL语言和事务处理,并提供了对大规模数据的分布式查询和数据仓库功能的支持。Trafodion可以与Hadoop、Spark和其他Hadoop生态系统工具集成,支持多种数据类型…

    database 2023年3月27日
    00
  • K8S prometheus operator监控工作原理介绍

    K8S Prometheus Operator是Kubernetes集群监控工具Prometheus的一个补充模块,它的主要作用是在Kubernetes集群中为Prometheus的监控对象(例如Pod、Service、Ingress等)自动提供配置和部署。 K8S Prometheus Operator的工作原理如下: 创建自定义资源定义(Custom R…

    database 2023年5月22日
    00
  • IDEA创建SpringBoot项目整合mybatis时mysql-connector-java报错异常的详细分析

    完整攻略:IDEA创建SpringBoot项目整合mybatis时mysql-connector-java报错异常的详细分析 问题分析在IDEA中创建SpringBoot项目并整合Mybatis,如果使用MySQL作为数据库,在运行项目时可能会出现mysql-connector-java报错的异常。具体错误信息如下: java.lang.ClassNotFo…

    MySQL 2023年5月18日
    00
  • MybatisPlus保存、读取MySQL中的json字段失败问题及解决

    根据你的要求,以下是“MybatisPlus保存、读取MySQL中的json字段失败问题及解决”的完整攻略。 问题描述 在使用MybatisPlus操作MySQL数据库时,如果遇到要保存或读取包含JSON类型字段的表时,可能会出现保存或读取失败的情况。具体表现为:保存后JSON字段丢失或读取时解析失败。 问题分析 出现这种情况的原因主要有两个: MySQL版…

    database 2023年5月18日
    00
  • mysql索引学习教程

    Mysql索引学习教程 Mysql索引是提高数据查询速度的重要工具。本教程将详细讲解Mysql索引相关知识。 什么是索引? 索引是一种数据结构,用于在关系型数据库中提高查询效率。它们类似于图书馆中的书籍索引或字典索引,通过引导对数据进行快速访问和检索。 当执行一个SQL语句时,Mysql会遍历整个表来找到符合条件的记录行。但是,当表越来越大时,遍历整个表的操…

    database 2023年5月22日
    00
  • 什么是数据库?

    简单来说,数据库(Database)指的是长期存储在计算机内的、有组织的、可共享的数据集合。 数据库是一个可访问的数据集合,它以有组织的方式存储和管理信息。在数据库中,数据按照一定的规则被存储和组织,可以很方便地进行访问、协作和管理。常见的数据库类型包括关系型数据库和非关系型数据库。 数据库的作用是什么? 数据库可以存储和管理大量的结构化和非结构化数据,便于…

    2023年3月8日
    00
  • mySQL之关键字的执行优先级讲解

    MySQL之关键字的执行优先级讲解 MySQL中有大量的关键字,这些关键字在语句执行时都有各自的优先级。正确理解这些优先级能够帮助我们写出更高效、正确的SQL语句。 1.执行优先级 MySQL中关键字的执行优先级,从高到低依次为: 括号 乘除法 加减法 比较运算符 逻辑运算符 比较运算符和逻辑运算符中,优先级相同的运算符从左到右依次执行。 2.示例说明 示例…

    MySQL 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部