034.mysql-left join时把过滤条件写到where中、还是on中的区别;如果是inner join效果相同
tst00表
tst01表
CREATE TABLE `tst00` ( `id` int NOT NULL AUTO_INCREMENT, `json_v` text COLLATE utf8mb4_general_ci, `num` int DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; CREATE TABLE `tst01` ( `id` int NOT NULL AUTO_INCREMENT, `json_v` text COLLATE utf8mb4_general_ci, `num` int DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-------
left join
第一种过滤条件 写在最后用 where 过滤,先关联上再做筛选
SELECT * FROM `tst00` a left join `tst01` b on a.id = b.id where b.num = 2
第二种 用on过滤 ,数量是随着左表的,先关联,过滤条件只会把没有筛选到的右表的内容置为空
SELECT * FROM `tst00` a left join `tst01` b on a.id = b.id and b.num = 2
inner join 效果一样
SELECT * FROM `tst00` a join `tst01` b on a.id = b.id where b.num = 2 ; SELECT * FROM `tst00` a join `tst01` b on a.id = b.id and b.num = 2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下