【问题标题】:Unknown Column in Where Clause : Mysql Update QueryWhere 子句中的未知列:Mysql 更新查询
【发布时间】:2021-02-20 15:42:10
【问题描述】:

这是我的更新查询:

update grade 
  set grade='A'
where (select assignment*0.3+midExam*0.35+finalExam*0.35 as FINALSCORE 
       from taking) >= 85 
  and taking.student_id = grade.student_id 
  and taking.subject_id = grade.subject-id;

结果如下

'where 子句'中的未知列'take.student_id'

我做错了什么?

【问题讨论】:

    标签: mysql sql-update mariadb


    【解决方案1】:

    taking 在子查询内,然后在子查询外不可见

    根据您的需要,您应该使用带有连接的更新

    update grade 
    INNER JOIN taking ON taking.student_id=grade.student_id
           and taking.subject_id=grade.subject_id 
             and taking.assignment*0.3+taking.midExam*0.35+taking.finalExam*0.35 >= 85
    set grade='A'
    

    通用解决方案

    您可以尝试为每个年级添加一个案例

    update grade 
    INNER JOIN taking ON taking.student_id=grade.student_id
           and taking.subject_id=grade.subject_id          
    set grade = (case when taking.assignment*0.3+taking.midExam*0.35+taking.finalExam*0.35 >= 85 THEN  'A'
                  when taking.assignment*0.3+taking.midExam*0.35+taking.finalExam*0.35 between 60.0 and 84.9 THEN 'B'
                  ELSE 'C' END) 
    

    【讨论】:

    • 我试了但是成绩变成0
    • 我不在你的数据中..如果你有 0 这意味着你的错误似乎已经解决了,更新你的问题添加一个适当的数据样本和预期的结果..(如表格文本)。
    • 我有两张表,第一张表(taken)包含(student_id、subject_id、assignment、midExam、finalExam),第二张表(grade)包含(student_id、subject_id和grade)。示例分配值,midExam,finalExam adalag (88.00, 67.00, 88.09)。并且要完成的命令是计算所有值(assignment*0.3+midExam*0.35+finalExam*0.35)在 A、B、C、D 之间,其中 A= >85,B= 85>70,C= 60
    • 更新成绩集grade='A' where (select assignment*0.3+midExam*0.35+finalExam*0.35 as FINALSCORE fromtaking where student_id=990 and subject_id=110) >= 85 and student_id=990和subject_id=110;这是讲师给出的示例代码,但我有 40 个学生数据和 10 个 subject_id,我正在寻找适用于整体的代码,
    • @NATALIA ...在我的第一条评论中,我不在你的数据和你的脑海中,所以不是编码服务..或程序员的辅导服务。 SO是问题/答案网站..您发布了有关语法错误的问题,然后我回答了您的问题。如果您在解决第一个问题后遇到其他问题,则应发布专门记录的新问题..如果答案解决了您的原始问题,则应将其标记为已接受..答案
    猜你喜欢
    • 2021-09-19
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    相关资源
    最近更新 更多