left jion on and 与 where 的区别
left jion on and 与 where 的区别
参考链接:https://blog.csdn.net/qq_33864656/article/details/77838258
参考链接:https://www.icode9.com/content-4-896261.html
以mysql为例子
小绿CREATE TABLE
testa
(
id INT NOT NULL,
name VARCHAR(20),
PRIMARY KEY (id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci;
CREATE TABLE
testb
(
Id INT NOT NULL,
age INT,
PRIMARY KEY (Id)
)
ENGINE=InnoDB DEFAULT CHARSET=latin1 DEFAULT COLLATE=latin1_swedish_ci;
insert into testa values(1, '小黄');
insert into testa values(2, '小绿');
insert into testa values(3, '小白');
insert into testa values(4, '小黑');
insert into testB values(1, 10);
insert into testB values(2, 11);
insert into testB values(3, 12);
insert into testB values(4, 13);
通过例子说明:
使用left join on where,且where后跟的是右边的条件
-- 使用left join on where,且where后跟的是右边的条件
select * from testa a
left join testb b on a.id = b.id where b.age = 10;
结果:
id | name | id | age |
---|---|---|---|
1 | 小黄 | 1 | 10 |
使用left join and且and后跟的是右边的条件
-- 使用left join and且and后跟的是右边的条件
select * from testa a
left join testb b on a.id = b.id and b.age = 10;
结果:
id | name | id | age |
---|---|---|---|
1 | 小黄 | 1 | 10 |
2 | 小绿 | (NULL) | (NULL) |
3 | 小白 | (NULL) | (NULL) |
4 | 小黑 | (NULL) | (NULL) |
使用left join on where,且where后跟的是左边的条件
-- 使用left join on where,且where后跟的是右边的条件
select * from testa a
left join testb b on a.id = b.id where a.name = '小黄';
结果:
id | name | id | age |
---|---|---|---|
1 | 小黄 | 1 | 10 |
使用left join and且and后跟的是左边的条件
-- 使用left join and且and后跟的是左边的条件
select * from testa a
left join testb b on a.id = b.id and a.name = '小黄';
结果:
id | name | id | age |
---|---|---|---|
1 | 小黄 | 1 | 10 |
2 | 小绿 | (NULL) | (NULL) |
3 | 小白 | (NULL) | (NULL) |
4 | 小黑 | (NULL) | (NULL) |
总结
-
where 是在两个表join完成后,再附上where条件。
-
left/right join on and 是在表连接前筛选A表或B表那些数据符合条件,同时还是兼顾是left jion 还是inner join。即如果是left jion的话,如果left loin on and后的条件左边表的某条记录不满足,那么它不进行连接,但任然留在结果集中(此时右边部分的链接结果为NULL)。on条件是在生产临时表时使用的条件,它不管on中的条件是否为真,都会返回左表的记录。
-
inner jion on and 结果与where一样。
-
建议尽量使用where来过滤条件。
保持微笑,时刻冷静,相信自己也相信队友,坚持信念
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具