MySQL 之 LEFT JOIN 避坑指南

本文介绍了在MySQL查询中LEFT JOIN操作的常见陷阱,通过班级与学生管理应用的例子,解析了如何正确写出返回预期结果的SQL语句。重点强调了在LEFT JOIN中,左表过滤应放在WHERE子句,而右表过滤应放在ON子句中,以确保查询的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论、商城里一个货物有多少评论、一条评论有多少个赞等等。但是由于对join、on、where等关键字的不熟悉,有时候会导致查询结果与预期不符,所以今天我就来总结一下,一起避坑。

假设有一个班级管理应用,有一个表classes,存了所有的班级;有一个表students,存了所有的学生,具体数据如下

CREATE TABLE `classes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
INSERT INTO `test`.`classes`(`id`, `name`) VALUES (1, '一班');
INSERT INTO `test`.`classes`(`id`, `name`) VALUES (2, '二班');
INSERT INTO `test`.`classes`(`id`, `name`) VALUES (3, '三班');
INSERT INTO `test`.`classes`(`id`, `name`) VALUES (4, '四班');
CREATE TABLE `students&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值