题目:查询下列两表的对应关系
全链接 :相当于集合的并集 全部都会联合一次
在查找对应关系的时候
A表10000行,B表10000行,都不算大.
但是全相乘,在内存中生成一个非常大的数据. 10000*10000行.
另外:索引没利用
虽然全链接很常用 很多人用,但是它的效率极低,生成n*m行数据再筛选出来
左链接:
左连接的语法:
假设A表在左,不动,B表在A表的右边滑动.
A表与B表通过一个关系来筛选B表的行.
语法:
A left join B on 条件 条件为真,则B表对应的行,取出
A left join B on 条件
这一块,形成的也是一个结果集,可以看成一张表 设为C
既如此,可以对C表作查询,自然where,group ,having ,order by ,limit 照常使用
以男生为基准,女生表从上往下逐个匹配,由于次方法用索引,所以效率高很多!
没有另一半的,用NULL补齐
以女生为基准,男生表从上往下逐个匹配
注意,a left join b,并不是说a表的就一定在左边,只是说在查询数据时,以a表为准
右连接:
用右连接. 刚才是 女生 left join 男
用右连接,只需 男 right join 女
就是一个相对的关系 你在我左边 那么 我就在你右边 明白了左链接 反过来就明白右连接了!
左右连接是可以互换的
A left join B, 就等价于 B right join A
注意:既然左右连接可以互换,尽量用左连接,出于移植时兼容性方面的考虑.
内连接:
如果从集合的角度
A inner join B
和 left join /rightjoin的关系
答: 内连接是左右连接的交集
1 女生左链接 中本来有的屌丝->null 没有了
2 男生左链接 中本来有的宝钗 ->null 没有了
内连接是左右连接的交集
经典左链接面试题
按以上的形式查询
A left join B on 条件
这一块,形成的也是一个结果集,可以看成一张表 设为C
既如此,可以对C表作查询,自然where,group ,having ,order by ,limit 照常使用
可以无限左链接 并且可以把它看成一个表 然后进行having 筛选