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是过滤条件,上图的后三条会过滤掉
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端