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来过滤条件。
标签:join,testa,jion,NULL,where,id,left 来源: https://www.cnblogs.com/annamaple/p/16351131.html