wuliangtdi 发表于 2020-4-15 16:17:55

数据库更新数据

SQL SERVER数据库
题目:把成绩低于该门课程的平均成绩的学生的成绩改为跟该门课程平均分一样;
表有C表(CNO,CN)
        S表(SNO,SN,SEX,AGE,DEPT)
        SC表(SNO,CNO,SCORE)
数据库小白 请问各位大佬这个咋写的

倒戈卸甲 发表于 2020-4-15 16:33:08

帮顶,只学过sun公司的两款产品,微软的这个没机会学

wuliangtdi 发表于 2020-4-15 17:29:48

倒戈卸甲 发表于 2020-4-15 16:33
帮顶,只学过sun公司的两款产品,微软的这个没机会学

学校学这个 本来说安装MySQL的 不过应该用法都差不多

wp231957 发表于 2020-4-15 21:04:08

wuliangtdi 发表于 2020-4-15 17:29
学校学这个 本来说安装MySQL的 不过应该用法都差不多

可以说,各种数据库sql语法应该是大同小异,但也不能完全一致:

你这个问题我在mysql上试验通过(我不会你说这个sqlserver)

set @c=(select AVG(other) from wordb);
update wordb set other=@c where other<@c;
我这里的other字段就是一些double类型数据

wuliangtdi 发表于 2020-4-15 21:07:16

wp231957 发表于 2020-4-15 21:04
可以说,各种数据库sql语法应该是大同小异,但也不能完全一致:

你这个问题我在mysql上试验通过(我 ...

万一有很多门的课程这样的话应该是不行的吧

wuliangtdi 发表于 2020-4-16 10:21:17

各位i大佬,能否提供一些思路 不需要啥代码 思路对的就可以啊

wuliangtdi 发表于 2020-4-17 17:18:32

CREATE TABLE SC_AVG_SCORE
(
        CNO VARCHAR(255) PRIMARY KEY(CNO),
        AVG_SCORE FLOAT
)

INSERT INTO SC_AVG_SCORE(CNO,AVG_SCORE)
        SELECT CNO,AVG(SCORE)
        FROM SC
        GROUP BY CNO;

SELECT * FROM SC;

UPDATE SC SET SC.SCORE = SC_AVG_SCORE.AVG_SCORE FROM SC,SC_AVG_SCORE
        WHERE SC_AVG_SCORE.CNO = SC.CNO AND SC.SCORE < SC_AVG_SCORE.AVG_SCORE;

SELECT * FROM SC;

或者
SELECT * FROM SC;

UPDATE SC SET SC.SCORE = SC_AVG_SCORE1.AVG_SCORE
                FROM SC,(        SELECT CNO,AVG(SCORE) AS AVG_SCORE
                                        FROM SC
                                        GROUP BY CNO
                                ) AS SC_AVG_SCORE1
                                WHERE SC_AVG_SCORE1.CNO = SC.CNO AND SC.SCORE < SC_AVG_SCORE1.AVG_SCORE;

SELECT * FROM SC;

一世长安呢 发表于 2020-4-25 14:19:39

给update加个where条件
update 表 set 列.成绩=平均成绩分数 where 学生成绩<平均成绩

一世长安呢 发表于 2020-4-25 14:21:55

update sc set score = 平均成绩分数 where score<平均分数

一世长安呢 发表于 2020-4-25 14:22:49

update操作的时候谨慎操作,都是教训{:10_247:}

一世长安呢 发表于 2020-4-25 14:26:09

但是这个只能针对单表{:10_256:}

wuliangtdi 发表于 2020-4-25 15:00:13

一世长安呢 发表于 2020-4-25 14:19
给update加个where条件
update 表 set 列.成绩=平均成绩分数 where 学生成绩

我加了啊 你看后面SC_AVG_SCORE1.CNO = SC.CNO AND SC.SCORE < SC_AVG_SCORE1.AVG_SCORE

一世长安呢 发表于 2020-4-25 18:27:21

wuliangtdi 发表于 2020-4-25 15:00
我加了啊 你看后面SC_AVG_SCORE1.CNO = SC.CNO AND SC.SCORE < SC_AVG_SCORE1.AVG_SCORE

{:10_266:}超出我的知识范围了
页: [1]
查看完整版本: 数据库更新数据