雖然有很多類似這樣的問題,如 「Updating a record from another table」,但我無法得到這個工作。如何更新從另一個表格中選擇字段的表格?
我有一個查詢選擇和更新表sem_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 sem_stdexamfinresmark
set
sr.SecondTermMark = s.aggPer and
sr.SecondTermGrade = s.aggGrade
from
(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
where
sr.studentid=s.studentid and
sr.subjectid=s.subjectid and
s.currsession =1 and
sr.classid='8';
select * from sem_exam;
update sem_exam set currsession =1;
你的問題是什麼?你需要什麼樣的描述? – Abhay
@Abhay我有一個查詢插入myql數據庫。現在我需要通過選擇另一個表來更新先前插入的記錄,但查詢無法正常工作。我想知道這是如何工作的。 – kinkajou
我沒有看到你的查詢有什麼問題嗎?假設沒有語法錯誤,當你說查詢不能正常工作時,意味着它沒有進行任何更新,對吧?你已經提到子查詢返回結果,所以我想到的可能性是UPDATE中的WHERE子句不返回任何匹配的行。你能確認WHERE是否找到匹配的行嗎? – Abhay