作者bop000111 (bop000111)
看板Database
标题Re: [SQL ] UPDATE 用法?
时间Fri Jan 25 01:00:29 2008
※ 引述《dcplay01 (dcplay)》之铭言:
: ※ 引述《starjou (周星星)》之铭言:
: : AVG 不是要用 GROUP BY 并用?
: : UPDATE 可以跟 SELECT 并用
: : 你要 UPDATE 的 table 跟 SELECT 应该是有一个键值关联吧?
: : 然後 SELECT 的平均应该是有某一个键值做 GROUP 的依据再平均
: : 譬如学号
: : 所以 某个学生的 所有分数平均 =
: : SELECT AVG(分数) FROM 成绩 GROUP BY 学号
: : UPDATE 总成绩 SET 平均分数 = (SELECT AVG(分数) FROM 成绩
: : WHERE 成绩.学号 = 总成绩.学号 GROUP BY 成绩.学号)
: : 这是你想做的吗?
: 我是想做
: SELECT AVG(分数)
: FROM 课程&分数资料表
: WHERE 某个学生&某些课程 有些课程的成绩不列入
: 想把这结果放在
: 同样的资料表下...
: update 课程&分数资料表 set 某类专业平均 = (SELECT AVG(GRADE)成绩平均
: FROM 课程&分数资料表
: WHERE 某个学生 & 某几科的成绩
: GROUP BY 1)
: 可是不行...
update t1 set t1.avg_grade = t2.avg_grade1
from grade_table t1 join (
select student_id, avg(grade) avg_grade1
from grade_table
where 你要的条件
group by student_id
)t2
on t1.student_id = t2.student_id
试试看吧,
此类问题之解决方式就是先找出学生及平均分数(即student_id and avg_grade1),
此查询结果再与Table作join,
即可作更新
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.208.158