Select语句自连接查询
Select语句自连接查询
Self join query of select
2
知识点内容概要
自连接查询简介 自连接查询操作
3 自连接查询简介
如果在一个连接查询中,涉及的两个表都是同一张表,这种查询称为自连接查询。 自连接是指将一个表与它自身连接,将表如同分身一样分成两个,使用不同的别名,
7 自连接查询操作
8 自连接查询操作
【实例3】查询所有同时选修课程编号为c1和c2的学生的学号、姓名。 Select s.sno,sname from s,sc as sc1,sc as sc2 where s.sno=sc1.sno and sc1.sno=sc2.sno and o='c1' and o='c2'
6 自连接查询操作
6 自连接查询操作
【实例2】查询至少选修两门课的学生的学号。 Select distinct sc1.sno from sc as sc1,sc as sc2 where sc1.sno=sc2.sno and o<>o
或:Select distinct sc1.sno from sc as sc1 inner join sc as sc2 on sc1.sno=sc2.sno and o<>o
5 自连接查询操作
【实例1】查询所有同时选修课程编号为c1和c2的学生的学号。 Select sc1.sno from sc as sc1,sc as sc2 where sc1.sno=sc2.sno and o='c1' and o='c2'
或:Select sc1.sno from sc as sc1 inner join sc as sc2 on sc1.sno=sc2.sno and o='c1' and o='c2'
请思考:什么情况下需要使用自连接?
格式2:Select <列表字段> from <表名1> as <别名1> Inner Join <表名2> as <别名2> on <别名1.列名=别名2.列名>
说明:①因为同一张表在From子句中多次出现,为了区别该表的每一次出现,需要 使用as关键字为表定义一个别名。as关键字可以省略,而用空格隔开原名与别名。 ②若为表指定了别名,则只能用“别名.列名”来表示同名列,不能用“表名.列 名”表示。
或:Select s.sno,sname from s inner join sc as sc1 on s.sno=sc1.sno inner join sc as sc2 on sc1.sno=sc2.sno and o='c1' and o='c2'
9 自连接查询操作
9 拓展练习
成为两个独立的表。 自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在
逻辑上分为两张表。 自连接通常用于查询表中具有相同列值的行数据。
4 自连接查询简介
格式1:Select <列表字段> from <表名1> as <别名1>,<表名2> as <别名2> where <别名1.列名=别名2.列名>