inner join与 left join 和 on与where 的区别
作者:互联网
select * from test;
select * from test2
select * from test inner join test2 on test.projectId=test2.projectId
共4条记录,test2里有两条projectId=1的,所以连接出两条,主表test的前两天记录不符合连接条件,不显示
-- inner join 结果集是符合连接条件的数据,如果从表没有符合on条件的数据,主表也不会展示
select * from test left join test2 on test.projectId=test2.projectId
-- left join 结果集是主表的全部数据,如果从表无符合连接条件的,补空
select * from test left join test2 on test.projectId=test2.projectId and test2.projectId !=1
这里and作为连接条件,只有test2里projectid=2和3的两条符合,但因为是左连接,主表会显示所有记录,不符合连接条件的从表的列补空
select * from test left join test2 on test.projectId=test2.projectId where test2.projectId !=1
这里where是过滤条件,上图的后三条会过滤掉
标签:test2,join,projectId,inner,test,where,select,left 来源: https://www.cnblogs.com/1--2/p/15875603.html