求写SQL删除语句。。。删除表中的多行。。。
表结构是:
Student (sno:char(4), sname char(10), sex : char(1), age: int)
Primary key: sno
Course (cno:char(4), cname char(10), credit : int)
Primary key: cno
sc(sno:char(4), cno char(4), grade: int)
Primary key: (sno,cno)2 foreign key : sno and cno
删除SC中所有成绩小于本课平均成绩的记录。。。。
Remove alltuples in table sc whose grades are less than the average grade of the samecourse.
我是这么写的。。。不对哎。。求修改。。。
DELETE
FROM SC x
WHERE grade<(SELECT AVG(grade)
FROM SC y
WHERE x.cno=y.cno
);
DELETE
FROM SC x
WHERE x.cno in
(
select y.cno
from sc y
where y.cno = x.cno
group by y.cno
having y.grade < AVG(y.grade)
)
DELETE FROM SC
WHERE
grade < ( SELECT AVG(grade) FROM SC y WHERE SC.cno=y.cno );
我印象中,册激或 好像 DELETE FROM 表 这里不能加州伍 别名的样子...
所以把
DELETE
FROM SC x
修改为铅凯
DELETE
FROM SC
不知道对不对了.......
DELETE SC
FROM SC a,(SELECT cno,avg(grade) pj from SC GROUP BY cno) b
where a.cno=b.cno and a.grade<b.pj
delete * from SC x where grade < (select avg(grade) from SC y) and SC x.cno = SC y.cno