0

0

如何使用left join_mysql左连接查询说明

P粉602998670

P粉602998670

发布时间:2025-12-29 17:51:08

|

972人浏览过

|

来源于php中文网

原创

LEFT JOIN 保留左表全部记录,右表无匹配时字段为 NULL;其结果行数由左表决定,ON 条件用于关联,右表筛选须写在 ON 而非 WHERE,否则退化为 INNER JOIN。

如何使用left join_mysql左连接查询说明

LEFT JOIN 用于保留左表全部记录,右表只匹配符合条件的行;没匹配上的右表字段显示为 NULL。

LEFT JOIN 的基本语法和逻辑

LEFT JOIN 以左表(FROM 后面的表)为基准,逐行查找右表中满足 ON 条件的记录。只要左表某行存在,无论右表有没有匹配项,这行都会出现在结果里。右表没匹配到的部分,对应字段值为 NULL。

写法示例:

SELECT a.id, a.name, b.order_amount
FROM users a
LEFT JOIN orders b ON a.id = b.user_id;

上面语句会列出所有用户,包括那些从未下过单的人(此时 order_amount 为 NULL)。

Z Code
Z Code

智谱AI推出的轻量级AI代码编辑器

下载

什么时候必须用 LEFT JOIN

  • 查“所有 A 及其对应的 B”,但允许 B 缺失:比如统计每个用户的订单总额,也要包含零订单用户
  • 筛选条件写在 ON 子句而非 WHERE:若把右表过滤条件误写在 WHERE,会导致 LEFT JOIN 变成 INNER JOIN 效果
  • 需要区分“无数据”和“数据为 0/空字符串”:NULL 是明确的缺失标识,便于后续判断

常见错误和注意事项

  • 别把右表条件放 WHERE:例如 WHERE b.status = 'paid' 会过滤掉右表为 NULL 的行,实际丢掉左表无匹配的记录
  • ON 条件要写清楚关联字段:避免漏写或写错列名,尤其是多表连接时字段名可能重复
  • 注意 NULL 值参与计算:如 SUM(b.amount) 自动忽略 NULL,但 b.amount + 10 遇到 NULL 会得 NULL,可用 IFNULL(b.amount, 0) 处理

LEFT JOIN 和 INNER JOIN 的直观区别

假设 users 表有 5 行,orders 表有 3 行且只关联其中 2 个用户:

  • INNER JOIN 结果最多 2 行(只返回两边都有的匹配)
  • LEFT JOIN 结果固定 5 行(users 全部保留),其中 3 行的 orders 字段为 NULL

本质差异在于驱动表——LEFT JOIN 的结果行数由左表决定,不是由匹配数量决定。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

227

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

432

2024.03.01

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

246

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

204

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1431

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

606

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

546

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

539

2024.04.29

俄罗斯搜索引擎Yandex最新官方入口网址
俄罗斯搜索引擎Yandex最新官方入口网址

Yandex官方入口网址是https://yandex.com;用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 776人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号