select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and SC.C#='002' 你那句跟这句是一样的
select * from Student a where exists(select 1 from SC where S#=a.S# and C#='002') and exists(select 1 from SC where S#=a.S# and C#='001')
这么说吧sc是个表 表别名或子查询别名 就代表了表或者子查询结果集的行集。一个别名指代一个行集。当一个行集多次使用时,用别名来处理。select a.* from tb a ,tb b where a.id=b.id 表只有一个,但却是从两个行集中进行处理。就是这样。把别名理解为当前产生的行集的名字就可以了。
别名: 1)可以提高可读性 2)可以减少引用的长度,录入tablename1.a, 当tablename1 as t1 后,可以用t1.a来引用 3)当表自身连接时必须用别名
哈哈,是啊 SORRY select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and (SC.C#='001' or SC.C#='002')
select S.S#,S.Sname from Student S join SC on S.S#=SC.S# where SC.C# in ('001','002')
你那句跟这句是一样的
表别名或子查询别名
就代表了表或者子查询结果集的行集。一个别名指代一个行集。当一个行集多次使用时,用别名来处理。select a.* from tb a ,tb b where a.id=b.id
表只有一个,但却是从两个行集中进行处理。就是这样。把别名理解为当前产生的行集的名字就可以了。
1)可以提高可读性
2)可以减少引用的长度,录入tablename1.a, 当tablename1 as t1 后,可以用t1.a来引用
3)当表自身连接时必须用别名
哈哈,是啊
SORRY
select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and (SC.C#='001' or SC.C#='002')
select S.S#,S.Sname
from Student S join SC on S.S#=SC.S#
where SC.C# in ('001','002')