其他分享
首页 > 其他分享> > inner join与 left join 和 on与where 的区别

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