SQL Server中怎么实现多表连接查询功能 ,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

具体代码如下所示:

--交叉连接产生笛卡尔值(X*Y)SELECT*FROMStudentcrossJoindbo.ClassInfo--另外一种写法SELECT*FROMStudent,ClassInfo--内连接(Inner可以省略)SELECT*FROMStudentJOINdbo.ClassInfoONdbo.Student.Class=dbo.ClassInfo.ID;--InnerJoinSELECT*FROMStudentINNERJOINdbo.ClassInfoONdbo.Student.Class=dbo.ClassInfo.ID;--on条件,通常是主外键,但是不限于主外键--on条件,允许有多个,而且可能是针对某个表的SELECT*FROMStudentINNERJOINdbo.ClassInfoONdbo.Student.Class=dbo.ClassInfo.IDANDdbo.Student.ClassIN(1,2)--针对Student表增加查询条件--不等于(笛卡尔值减去相等的值)SELECT*FROMStudentINNERJOINdbo.ClassInfoONdbo.Student.Class<>dbo.ClassInfo.ID;--自连接从Class表中查询到Class所在的系SELECTT1.*,T2.ClassNameFROMdbo.ClassInfoAST1INNERJOINdbo.ClassInfoAST2ONT1.PID=T2.ID--LeftJoinSELECT*FROMStudentLeftJOINdbo.ClassInfoONdbo.Student.Class=dbo.ClassInfo.ID;--RightJoinSELECT*FROMStudentRIGHTJOINdbo.ClassInfoONdbo.Student.Class=dbo.ClassInfo.ID;--全外连接SELECT*FROMStudentFULLOUTERJOINdbo.ClassInfoONdbo.Student.Class=dbo.ClassInfo.ID;--外连接和内连接的区别是:--内连接,on条件不符合的话,会过滤掉数据--外连接,以保留表为主,on条件成立显示数据,否则显示NULL--Union纵向连接SELECTStuID,StuName,StuEnName,StuAge,StuBirthdayFROMStudentWHEREStuID<=2UNIONSELECTStuID,StuName,StuEnName,StuAge,StuBirthdayFROMdbo.StudentWHEREStuID>2--Union去重复SELECTStuSexFROMStudentWHEREStuID<=2UNIONSELECTStuSexFROMdbo.StudentWHEREStuID>2--Union显示全部SELECTStuSexFROMStudentWHEREStuID<=2UNIONALLSELECTStuSexFROMdbo.StudentWHEREStuID>2--Except差集,排除SELECTStuID,StuName,StuEnName,StuAge,StuBirthdayFROMStudentExceptSELECTStuID,StuName,StuEnName,StuAge,StuBirthdayFROMdbo.StudentWHEREStuID<=2--Intersect交集SELECTStuID,StuName,StuEnName,StuAge,StuBirthdayFROMStudentWHEREStuID>=2ExceptSELECTStuID,StuName,StuEnName,StuAge,StuBirthdayFROMdbo.StudentWHEREStuID<=3

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。