详解MySQL LEFT/RIGHT JOIN:外连接

yizhihongxing

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主从复制断开的常用修复方法

    当MySQL主从复制出现异常时,需要尽快进行修复,否则可能会导致数据的不一致性。下面是我总结的MySQL主从复制断开的常用修复方法的完整攻略。 1. 检查主从服务器之间的网络连接 在主从服务器之间进行网络连通性测试,可以使用ping命令或telnet命令。如果发现网络连接有问题,则需要解决网络问题,才能继续进行主从复制的修复。 2. 检查主从服务器之间的同步…

    MySQL 2023年5月18日
    00
  • 分享8个不得不说的MySQL陷阱

    我们来分享一下“分享8个不得不说的MySQL陷阱”的攻略。 1. 使用COUNT(*)查询时的陷阱 使用COUNT(*)查询时,需要注意以下陷阱: COUNT(*)会统计表中所有行的数目,即使行的值为NULL也会被计数,导致结果不准确; 如果查询的表没有索引,COUNT(*)查询会进行全表扫描,效率非常低下; 尽量使用COUNT(column),只针对某一列…

    database 2023年5月21日
    00
  • sql2005 附加数据库出错(错误号:5123)解决方法

    解决sql2005 附加数据库出错(错误号:5123)的完整攻略 问题描述 在使用 SQL Server Management Studio (SSMS) 附加数据库时,出现错误消息“无法打开物理文件“XXXX.mdf”操作系统错误 5: “5(Access is denied.)”。”或者“无法打开物理文件“XXXX_log.ldf”操作系统错误 5: “…

    database 2023年5月21日
    00
  • MySQL5.6.22安装配置方法图文教程

    以下是MySQL5.6.22安装配置方法图文教程的完整攻略: 准备工作 在开始安装之前,我们需要进行一些基本的准备工作。 系统要求 MySQL要求主机最低要求: CPU:Pentium III 或更高。 内存:256MB 或更高。 存储:500MB 或更高。 下载MySQL安装包 你可以从MySQL的官网上下载最新版本的MySQL安装包。下载地址:https…

    database 2023年5月22日
    00
  • Docker的MySQL容器时区问题修改

    针对这个问题,我的解决方案如下: 1. 查看MySQL容器的默认时区 首先我们需要确认MySQL容器的默认时区,可以通过以下步骤查看: 进入MySQL容器 docker exec -it mysql_container_name bash 这里的mysql_container_name为你创建的MySQL容器的名称,如果不知道可以通过docker ps命令查…

    database 2023年5月22日
    00
  • Django数据库迁移常见使用方法

    下面是关于”Django数据库迁移常见使用方法”的完整攻略: 1. 简介 在Django中,数据库迁移可以帮助我们通过代码管理数据库的变更。每当我们有关于模型结构的更改时,我们都需要运行一次迁移,以同步数据库。本篇攻略将会介绍Django数据库迁移的常见使用方法。 2. 迁移的基本操作 在开始使用数据库迁移之前,我们需要安装Django及其相关组件,具体方法…

    database 2023年5月22日
    00
  • Mysql Sql 语句练习题(50道)

    Mysql Sql 语句练习题(50道)攻略 1. 准备工作 在开始练习前,先确认你已有一份MySQL安装文件,若还未安装,请先安装。 安装完成后,你需要打开终端或命令行,连接到MySQL服务,使用下面的命令: mysql -u your_username -p 将your_username替换成你自己的MySQL用户名,按照提示输入密码即可连接到MySQL…

    database 2023年5月22日
    00
  • 详解在python操作数据库中游标的使用方法

    下面我就详细讲解一下“详解在Python操作数据库中游标的使用方法”。 什么是游标(Cursor) 在Python中操作数据库时,游标是不可或缺的一个组件。游标(Cursor)是连接到数据库的一个对象,通过它可以对数据库进行操作。一般情况下,我们需要先创建一个游标对象,然后再使用该对象来执行 SQL 语句,并获取执行结果。在 Python 的 DB API …

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