有一个gschool库,其中表student中有3个字段student_id,student_name,student_score,要求将成绩为前10名的学生成绩均增10,然后再将所有成绩大于80的学生输出。我的思路是先定义一个结构
student stu
{int student_id,
 string student_name,
 int student_score
 }然后以select * from student ordered by student_score DEC使得按成绩的降序返回记录集,将前10个增10后存入stu结构数组中。然后进行大于80的判断和将改后的记录写回student,
这样对吗?有没有更好的办法呢?
谢谢指点!

解决方案 »

  1.   

    首先更新成绩:
    UPDATE student SET student_score=student_score+10 WHERE student_id in (SELECT TOP 10 student_id FROM student ORDER BY student_score DESC)再选择
    SELECT * FROM student WHERE student_score > 80搞定
      

  2.   

    这回好了--建立测试环境
    CREATE TABLE student
    (student_id int,
    student_name nvarchar(50),
    student_score int
    )
    GO--插入数据
    INSERT student VALUES(1,'A',99)
    INSERT student VALUES(2,'B',98)
    INSERT student VALUES(3,'C',97)
    INSERT student VALUES(4,'D',96)
    INSERT student VALUES(5,'E',95)
    INSERT student VALUES(6,'F',94)
    INSERT student VALUES(7,'G',93)
    INSERT student VALUES(8,'H',92)
    INSERT student VALUES(9,'I',90)
    INSERT student VALUES(10,'J',90)
    INSERT student VALUES(11,'K',90)
    INSERT student VALUES(12,'L',88)
    INSERT student VALUES(13,'M',87)
    GO--测试
    update student set student_score=student_score+10 where student_id in (select student_id from student a where (select count(student_score) from student where student_score>a.student_score) < 10)select * from student order by student_score desc
    --删除测试环境
    DROP TABLE student--结果
    1 A 109
    2 B 108
    3 C 107
    4 D 106
    5 E 105
    6 F 104
    7 G 103
    8 H 102
    9 I 100
    10 J 100
    11 K 100
    12 L 88
    13 M 87