欢迎光临散文网 会员登陆 & 注册

SQL的多表查询的多种解法与自己总结的多种语法

2019-12-04 11:11 作者:诗书画唱  | 我要投稿

查询所有名字包含王的学生的信息和代课老师

解法1(未用多表查询):

select * from stuinfo  where  Sname LIKE '%王%' 

select * from teacherinfo  where  Tname LIKE '%王%'

解法2(用多表查询):

select * from classinfo as a, teacherinfo as b, stuinfo as c where a.TeacherID=b.TeacherID and a.ClassId=c.ClassID  and Sname LIKE '%王%'

自己总结的语法

select (列名)from (表名1) as(表名1的别名)/*注释:别名是便于少打原表名*/(表名2)as( 表名2的别名), (表名3) as(表名3的别名) where a.TeacherID=b.TeacherID and a.ClassId=c.ClassID  and (附加条件)

解法3(用多表查询):

select * from (classinfo a left join teacherinfo b on  a.TeacherID=b.TeacherID)left join stuinfo c on a.ClassID = c.ClassID where Sname LIKE '%王%' /*    ()可以省略,()内的内容可看成一个整体     */

自己总结的语法

select (列名)from (表名1) as(表名1的别名)left join(表名2)as( 表名2的别名)on(a.TeacherID=b.TeacherID)    left join(表名3) as(表名3的别名)on(a.ClassID = c.ClassID) where (附加条件)

解法4(用多表查询):

select *  from classinfo as a

inner join teacherinfo as b on(a.TeacherID=b.TeacherID)

inner join stuinfo as c on(a.ClassID = c.ClassID)

where Sname LIKE '%王%'

自己总结的语法

select (列名)from (表名1) as(表名1的别名)inner join(表名2)as( 表名2的别名)on(a.TeacherID=b.TeacherID)    inner join(表名3) as(表名3的别名)on(a.ClassID = c.ClassID) where (附加条件)

( 以上中的as与()可以省略   (a.TeacherID=b.TeacherID)等类似于一个表名,被看成了一个整体 )


SQL的多表查询的多种解法与自己总结的多种语法的评论 (共 条)

分享到微博请遵守国家法律