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是过滤条件,上图的后三条会过滤掉

posted @   杨吃羊  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示