Mysql 如何使用从另一个表中选择的字段更新表?

Mysql 如何使用从另一个表中选择的字段更新表?,mysql,ruby,database,sequel,Mysql,Ruby,Database,Sequel,虽然有很多类似的问题,比如 “”但我无法让它工作 我有一个查询选择并更新表sem\u stdexamfinresmark。select子查询返回多行数据,这些数据的大小可能不等于正在更新的表,但更新正在进行 查询如下所示: update sem_stdexamfinresmark sr, (select se.currsession, str.studentid, str.classid, str.subject

虽然有很多类似的问题,比如 “”但我无法让它工作

我有一个查询选择并更新表
sem\u stdexamfinresmark
。select子查询返回多行数据,这些数据的大小可能不等于正在更新的表,但更新正在进行

查询如下所示:

update  sem_stdexamfinresmark sr,
    (select 
         se.currsession,
         str.studentid,
         str.classid,
         str.subjectid,
         str.aggScore*(select gbtp.percentage from gb_termpercentage gbtp where gbtp.termname = se.examtype)/100 as aggPer,
         str.aggGrade
    from 
        sem_stdexamtermresr str,
        sem_exam se 
    where 
        str.examid=se.examid and 
        se.examtype = 'Second Term' and
        se.currsession =1 and classid='8' 
     ) s
     set 
        sr.SecondTermMark = s.aggPer and
        sr.SecondTermGrade = s.aggGrade 
     where
        sr.studentid=s.studentid and 
        sr.subjectid=s.subjectid and 
        s.currsession = s.currsession and
        sr.classid='8';

编辑:


尝试一些看起来更像:

update foo
set col = bar.col
from bar
where ...

这就是当一个人失眠时会发生的情况:(我只是犯了一个愚蠢的错误,在这里加上了“和”

你的问题是什么?你需要什么描述?@Abhay我有一个插入myql数据库的查询。现在我需要通过选择另一个表来更新我以前插入的记录,但查询无法正常工作。我想知道这是如何工作的。我没有发现你的查询有任何错误?假设没有语法错误rs,当你说查询工作不正常时,意味着它没有进行任何更新,对吗?你提到子查询正在返回结果,所以我想到的可能性是更新中的WHERE子句没有返回任何匹配行。你能确认WHERE是否找到匹配行吗?是的,它更新了有些记录,但不是全部。虽然我正在更新两列,但它只更新一列,下一列全部为空。第一列要么不好,要么乱七八糟。where子句的所有参数都要与特定行id匹配,即学生,我在看同一个查询两天,我很困惑。这就是当一个人犯了愚蠢的错误并四处走动时会发生的情况d:(感谢阿比和丹尼斯的帮助,我实际上得到了“和”在set语句中插入逗号您对我的查询有何看法任何建议我认为您应该像我上面建议的那样重写您的查询。在编写更新查询时,首先将其作为一个普通的
select*from foo,bar where…
。然后去掉字段列表和
foo,
部分,并用
update替换它们foo set…
update foo
set col = bar.col
from bar
where ...