假设有两个表,A表和B表,A表数据量少,B表数据量多的情况下
假设有两个表,A表和B表,A表数据量少,B表数据量多的情况下
适应需求:为了A表中某些数据量的缺失原因,将A表数据全导入Navicate
具体方法看我的另一个文章----
提出需求:
查询出A表中的某个字段值,但是A表中某个字段值(假设username)是在B表中情况下
正确写法:–左连接(左边表为主,右边表为辅,且右边表数据可以为空输出)
(其实就是根据条件没有查询出相应的结果)
举例子:下边这个左连接例子中 A表为主,B表为辅
SELECT a.*,b.username
FROM A a left join B b on a.userid = b.userid
// 原因:A表为主,A表中每个id去寻找B表中对应id
//如果让B表中对应id去找A表中id,那岂不是太浪费数据量多的B表资源
错误写法
SELECT a.*,b.username
FROM B b left join A a on a.userid = b.userid
为什么错误???
因为忽略一个前提条件:B表数据量大的情况下,从B表中拿出对应id和A表中id对比,这就忽略了一个主次关系,注意主次关系,一般情况下,用数据量少的表去找多的表id对比,否则浪费大量B表查询资源
右边连接一切和左连接举列子用意相反,且右边为主,左边可以输出为空的数据(其实就是根据条件没有查询出相应的结果)
全连接
两边都为主,左右两边都是可以输出为空的数据
解释:其实就是根据条件没有查询出相应的结果,有可能左边为空,有可能右边为空