暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

多表连接查询有多少种写法?多到不可思议~

数离dharma 2021-06-24
896

例 已知S(Sno,Sname,Age,Sex),SC(Sno,Cno,Score)

查询要求: 检索选修C2课的学生学号与姓名。

第1种写法(连接查询):

SELECT S.Sno, Sname

FROM   S,SC

WHERE  S.Sno=SC.Sno AND Cno='C2';


第2种写法(嵌套查询1):

SELECT Sno, Sname

FROM  S

WHERE Sno IN (

SELECT Sno

FROM SC

WHERE Cno='C2');


第3种写法(嵌套查询2)

SELECT Sno,Sname

FROM  S

WHERE 'C2' IN (

SELECT Cno

FROM SC

WHERE Sno=S.Sno);


第4种写法(使用存在量词的嵌套查询):

SELECT Sno, Sname

FROM  S

WHERE EXISTS(

SELECT *  

FROM SC

WHERE SC.Sno=S.Sno AND Cno='C2');


第5种写法 使用自然连接

SELECT Sno,Sname

FROM S NATURAL JOIN SC

WHERE Cno='C2';


第6种写法 使用on引导的等值连接

select s.sno,sname

from s join sc on s.sno=sc.sno

where cno='C2';


第7种写法 使用USING()引导的等值连接

select sno,sname

from s join sc using(sno)

where cno='C2';


第8种写法

SELECT Sno,Sname

FROM S

NATURAL JOIN

(SELECT Sno FROM SC WHERE Cno='C2');


第9种写法

select s.sno,sname

from s join

(SELECT Sno FROM SC WHERE Cno='C2')X

on s.sno=X.sno;


第10种写法

select sno,sname

from s join

(SELECT Sno FROM SC WHERE Cno='C2')

using(sno);


第11种写法

select * from

(select sno,sname from s)

natural join

(select sno from sc where cno='C2');


第12种写法

select * from

(select sno,sname from s)

join

(select sno from sc where cno='C2')

using(sno);


第13种写法

select X.sno,sname from

(select sno,sname from s)X

join

(select sno from sc where cno='C2')Y

on X.sno=Y.sno;

结果为:

文章转载自数离dharma,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论