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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
· drools 规则引擎和 solon-flow 哪个好?solon-flow 简明教程