1.用一条语句查询出每门课都大于80分的学生姓名
| name | 
class | 
Socre | 
| 张三 | 
语文 | 
81 | 
| 张三 | 
数学 | 
75 | 
| 李四 | 
语文 | 
76 | 
| 李四 | 
数学 | 
90 | 
| 王五 | 
语文 | 
81 | 
 
解法一:
1 2 3
   | select distinct name from table where name not in ( 	select distinct name from table where score<=80 )
   | 
 
解法二:
1
   | select name from table groupby name having min(fenshu)>80
   | 
 
2.删除除了自动编号不同外,其他都相同的学生冗余信息
| 自动编号 | 
学号 | 
姓名 | 
课程编号 | 
课程名称 | 
课程分数 | 
| 1 | 
2005001 | 
张三 | 
0001 | 
数学 | 
69 | 
| 2 | 
2005002 | 
李四 | 
0001 | 
数学 | 
80 | 
| 3 | 
2005001 | 
张三 | 
0001 | 
数学 | 
69 | 
 
1
   | delete tablename where 自动编号 not in (select min(自动编号) groupby 学号,姓名,课程编号,课程名称,课程分数)
   | 
 
3.有两个表A 和B ,均有key 和value 两个字段,如果B 的key 在A 中也有,就把B 的value 换为A 中对应的value
1
   | update b set b.value=(select a.value from a where a.key=b.key) where b.id in (select b.id from b,a where b.key=a.key);
   | 
 
5.查询表A中存在ID重复三次以上的记录
1
   | select * from(select count(ID) as count from table group by ID)T where T.count>3
   | 
 
6.取出每个班级成绩前两名的同学,表结构为sno、sname、class、score
1 2 3
   | select sname,class,score from grade where (   select count(*) from grade as f where f.class==grade.class and f.score>=grade.score ) <=2
   | 
 
6.经典的学习成绩问题
已知关系模式:
    s (sno,sname) 学生关系。sno 为学号,sname 为姓名
    c (cno,cname,cteacher) 课程关系cno 为课程号,cname 为课程名,cteacher 为任课教师
    sc(sno,cno,scgrade) 选课关系。scgrade 为成绩
1.找出没有选修过“李明”老师讲授课程的所有学生姓名
1
   | select sname from s where cno in (select cno from c where cteacher=='李明')
   | 
 
2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
3.列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩