第一步,新建四张表
人员表 职位表 组别表 人员职位关联表
以上四张表纯属瞎建
如果我们需要查询所有人员的组别职位信息,我们又多种解决方式,我这边先写两种
第一种:
第二种:
从这我们就可以看出第一个区别,当我们使用第一种方法的时候,如果关联表中没有出现与左表关联的数据,那么结果是不会显示该条数据的,而用left join,左表不论后面的条件有没有关联数据,都会显示出来该表所有数据,这么说可能比较麻烦,我直接用数据给大家演示一下
on代表的是临时条件,也就是在建立临时表的时候的判断条件,不管on的条件是不是为真,都会返回左表数据,我们先来测试这个
我们看到前面正常查询是没有问题的,对应的,当我们的on条件不存在的时候,我们还是可以看到左表的所有数据,这就是on的作用,只是限定了右表的显示条件,并不会影响到左表数据
on条件的后面还可以添加and条件,我们也可以来试验一下
我们发现,同样的不管and条件是否符合左表都会完全显示,只是对右表的数据进行了筛选,那如果我们不需要显示为空的呢,那我们可以直接将and换为where,因为where是对生成的临时表的数据进行限制,但是如果这样我们也可以直接使用第一种方法,毕竟使用left join最重要的一点就是因为left join可以将我们需要的数据完全显示而不需要太多考虑判断条件
right join,full join,inner join,cross join基本上差不多