left join 使用案例及特点。

left join ,right join 和full join  是我们经常所说的,而真正去使用他的时候是在什么情况, 有哪些注意点,以及有哪些特点需要注意。我在项目中遇到的真是需求在下面文章中举例,让你 更加明白他们的 用途。不只是左右表全查这些简单的含义。

创建一个简单的表:test_data,

left join 使用案例及特点。_第1张图片

接下来看sql:

SELECT a.*, b.* FROM test_data a
LEFT JOIN test_data b ON a.id = b.id AND a.id=1

结果:

left join 使用案例及特点。_第2张图片

总结: on条件只对 b表查询的数据起作用。

sql2:

SELECT a.*, b.* FROM test_data a
LEFT JOIN test_data b ON a.id = b.id 
WHERE  a.id=1

结果:

总结  : where 对最终的结果进行筛选。

sql3: 一对多
SELECT a.*, c.* FROM test_data a
LEFT JOIN test_data c ON a.`id` = c.`data1` AND a.id = 1

结果:
left join 使用案例及特点。_第3张图片

sql4: a->c->d

SELECT a.*, c.*,d.* FROM test_data a
LEFT JOIN test_data c ON a.`id` = c.`data1` AND a.id = 1
LEFT JOIN test_data d ON c.`id` = d.data1

结果:

left join 使用案例及特点。_第4张图片

sql5: c<-  a  ->d

SELECT  c.*, a.*, d.* FROM test_data a
LEFT JOIN test_data c ON a.`id` = c.`data1` AND a.id = 1
LEFT JOIN test_data d ON a.`id` = d.data1 AND a.id = 2

结果:

left join 使用案例及特点。_第5张图片

sql6:c<-  a  ->d

SELECT  c.*, a.*, d.* FROM test_data a
LEFT JOIN test_data c ON a.`id` = c.`data1` AND a.id = 1
LEFT JOIN test_data d ON a.`id` = d.data1 AND a.id = 1

结果:

left join 使用案例及特点。_第6张图片

总结:

根据SQL规律尤其是对比sql5 和sql 6 得知:根据当前  查询的主表展示数据 去查询子表数据,查不到用null补充。

所以当我们通过主表查询子表的时候,但是最终我们只取其中的一子表数据, 尽量要用distinct 关键字去重一下。

你可能感兴趣的:(sql数据库)