查询取经四人组中那些人不是悟空的结拜兄弟?
SELECT a.`user_name`,a.`over`,b.`over` FROM user1 a LEFT JOIN user2 b ON a.`user_name`=b.`user_name` WHERE b.user_name IS NULL
Join 操作的类型 —— Left Outer Join
左连接
理解
应用
默认查出左表的所有数据,右表关联不上的数据会显示为NULL
二、左外连接:以左表为基础,取左表的全部记录
语法: select 字段1,字段2,字段3 from 左表 left join 右表 on 左表.字段=右表.字段 where 条件;
Left Outer Join :
LEFT OUTER JOIN
join操作的类型-left outer join
left join可以实现如下查询(A为左表,B为右表):
1)、包含A表中全部记录
2)、包含存在A表中,但不存在B表中的记录
备注:not in查询不使用索引,可使用left join查询对其优化
left join使用2
left join使用1
LEFT OUTER JOIN
如果查询某个数据在A表不在B表,一般会用where 中的not in B 不能使用索引
left join对not in 进行优化
左外连接(Left Outer Join)
SELECT <select_list> FROM TableA A LEFT Join TableB B ON A.Key = B.Key;
SELECT a.user_name, a.over, b.over FROM user1 a LEFT JOIN user2 b ON a.user_name = b.user_name ;
SELECT <select_list> FROM TableA A LEFT Join TableB B ON A.Key = B.Key WHERE B.Key is NULL;
SELECT a.user_name, a.over, b.over FROM user1 a LEFT JOIN user2 b ON a.user_name = b.user_name WHERE b.user_name is not NULL;
Left Join
left join(左联接) :返回包括左表中的所有记录和右表中联结字段相等的记录;
right join(右联接) :返回包括右表中的所有记录和左表中联结字段相等的记录;
inner join(等值连接): 只返回两个表中联结字段相等的行.
左连接 left join 左表全部显示,右表存在为值,不存在为空
左外连接 加 where is not null ,右表为空不显示
左外连接:
左外连接两种使用场景
1、左外连接
select * from A a left join B b on a.id=b.id where b.id is null 在使用(left|right)join从句时,如果只需要其中一张表的数据可以后面加条件,不使用not in语句,因为它不走索引可能会降低我们的效率。 on 和where的区别 on是在两张表上建立联系,where是在结果中进行筛选。
Left join ...on...where....is null 可以对 not in 进行优化
left join 就是左外连接
left join 就是左外连接
A表为基础,
(1)select [] from A left outer join B on A.key=B.key;
(2)select [] from A left outer join B on A.key=B.key where B.key is not null
1、左外连接
(1)select [] from A left outer join B on A.key=B.key;
(2)select [] from A left outer join B on A.key=B.key where B.key is not null
加个条件可以只查询在A中,而不在B中的记录
not in语句
left outer join。
left ioin
Join从句操作的类型-Left Outer Join
left outer join