22,299
社区成员




-->生成测试数据
if object_id('s') is not null
drop table s
GO
create table s
(
SNO INT, --主键,学生编号
SNAME VARCHAR(10)--学生姓名
)
go
insert s select 1 ,'a'
insert s select 2 ,'b'
insert s select 3 ,'c'
insert s select 4 ,'d'
insert s select 5 ,'e'
if object_id('c') is not null
drop table c
go
create table c
(
CNO INT, --主键,课程名称编号
CNAME varchar(10),--课程名称
CTEACHER varchar(10) --授课老师姓名
)
go
insert c select 1 ,'aa','q'
insert c select 2 ,'bb','w'
insert c select 3 ,'cc','e'
if object_id('sc') is not null
drop table sc
go
create table sc
(
SNO int, --外键 学生编号
CNO int, --外键 ,课程编号
SCGRADE int --学生成绩
)
go
insert sc select 1,1,90
insert sc select 1,2,70
insert sc select 1,3,75
insert sc select 2,1,80
insert sc select 2,2,83
insert sc select 2,3,87
insert sc select 3,1,80
insert sc select 3,2,78
insert sc select 3,3,88
insert sc select 4,1,82
insert sc select 4,2,84
insert sc select 4,3,95
insert sc select 5,1,89
insert sc select 5,2,75
insert sc select 5,3,86
select SNO from sc s where cno='1' and exists(select 1 from sc where cno='1' and sno='2' and scgrade<s.scgrade)
/*
SNO
-----------
1
4
5
(3 行受影响)
*/
楼主要求的是学生编号,这是学生编号(SNO)的。-->生成测试数据
if object_id('s') is not null
drop table s
GO
create table s
(
SNO INT, --主键,学生编号
SNAME VARCHAR(10)--学生姓名
)
go
insert s select 1 ,'a'
insert s select 2 ,'b'
insert s select 3 ,'c'
insert s select 4 ,'d'
insert s select 5 ,'e'
if object_id('c') is not null
drop table c
go
create table c
(
CNO INT, --主键,课程名称编号
CNAME varchar(10),--课程名称
CTEACHER varchar(10) --授课老师姓名
)
go
insert c select 1 ,'aa','q'
insert c select 2 ,'bb','w'
insert c select 3 ,'cc','e'
if object_id('sc') is not null
drop table sc
go
create table sc
(
SNO int, --外键 学生编号
CNO int, --外键 ,课程编号
SCGRADE int --学生成绩
)
go
insert sc select 1,1,90
insert sc select 1,2,70
insert sc select 1,3,75
insert sc select 2,1,80
insert sc select 2,2,83
insert sc select 2,3,87
insert sc select 3,1,80
insert sc select 3,2,78
insert sc select 3,3,88
insert sc select 4,1,82
insert sc select 4,2,84
insert sc select 4,3,95
insert sc select 5,1,89
insert sc select 5,2,75
insert sc select 5,3,86
select * from sc s where cno='1' and exists(select 1 from sc where cno='1' and sno='2' and scgrade<s.scgrade)
/*
SNO CNO SCGRADE
----------- ----------- -----------
1 1 90
4 1 82
5 1 89
(3 行受影响)
*/
select sno
from sc
where cno = '1'
and scgrade >(
select SCGRADE from sc where sno = '2' and cno = '1')
select m.sno from sc m , sc n where m.CNO = '1' and n.CNO = '2' and m.SCGRADE > n.SCGRADE