MSSQLSERVER数据库-多表查询inner join
好些时间都没有呆在宿舍搞C#和SQL了. 昨天因为要完成老师的作业, 又开始重操旧业.
转正题, 说说昨晚遇到的一个小问题, 关于使inner join来进行多表查询.
对于没有从事过真正项目开发维护的人,或者对于大多数的学生,都很少需要自己在做汲及到数据库方面的程序时使用到inner join吧!?
因为自己搞的话 很多时候表的哪些字段自己已经写好了.
但问题出现了, 如果有一天创建的表不是你. 你要使用别人创建的表, 但是别人创建的这张表没有你需要的数据库字段.
这时候你需要在原有的表上根据里面的某个主键再创建一张附加的表
进行查询时 希望两张表合在一起 这时候就要用到inner join.
使用inner join很简单, 但我遇到的这么一个小问题是, 我要三张甚到四张表的inner join 而不是两张表的inner join 该怎么写?
就是这个小问题!
把过程记录下来一下
create table studentOne ( id int primary key identity(1,1), lid int , stname nvarchar(50) ) create table studentTwo ( id int primary key identity(1,1), stname nvarchar(50), sex nvarchar(2), age int , email nvarchar(50) ) create table studentThree ( id int primary key identity(1,1), lid int , english nvarchar(50), chinese nvarchar(50) ) |
创建了三张表后, 插入数据:
insert into studentOne(lid,stname) values (5132, '春晓' ) insert into studentOne(lid,stname) values (5100, '未名' ) insert into studentTwo(stname,sex,age,email) values ( '春晓' , '男' , '1' , '1111@qq.com' ); insert into studentTwo(stname,sex,age,email) values ( '未名' , '男' , '2' , '2222@qq.com' ); insert into studentThree(lid,english,chinese) values (5132, '50' , '60' ); insert into studentThree(lid,english,chinese) values (5100, '70' , '30' ); |
查看一下 三张表分别的显示
select * from studentOne; select * from studentTwo; select * from studentThree; |
studentOne的表:
id lid stname
1 5132 春晓
2 5100 未名
studentTwo的表:
id stname sex age email
1 春晓 男 1 1111@qq.com
2 未名 男 2 2222@qq.com
studentThree的表:
id lid english chinese
1 5132 50 60
2 5100 70 30
最后使用inner join来查询下
select * from studentOne inner join studentTwo on studentOne.stname = studentTwo.stname inner join studentThree on studentOne.lid = studentThree.lid |
id lid stname id stname sex age email id lid english chinese
1 5132 春晓 1 春晓 男 1 1111@qq.com 1 5132 50 60
2 5100 未名 2 未名 男 2 2222@qq.com 2 5100 70 30
可是发现表里有一些重复的字段 简单的修改一下SQL语句
select studentOne.id,studentOne.lid,studentOne.stname,studentTwo.age,studentTwo.email, studentTwo.sex,studentTwo.stname,studentThree.chinese,studentThree.english from studentOne inner join studentTwo on studentOne.stname = studentTwo.stname inner join studentThree on studentOne.lid = studentThree.lid |
最后显示结果如下:
id lid stname age email sex stname chinese english
1 5132 春晓 1 1111@qq.com 男 春晓 60 50
2 5100 未名 2 2222@qq.com 男 未名 30 70
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具