代码:
1 UPDATE t_scoreuser AS sc 2 SET sequence_name=(SELECT sequence_name 3 FROM t_exams AS ex 4 WHERE sc.sequence=ex.sequence AND sc.type=ex.type GROUP BY sequence_name) 5 WHERE sc.type=7 AND sc.sequence=2;
分析:
这是一段子查询的代码
提取其中的一段代码分析
UPDATE t_scoreuser AS sc SET sequence_name=(SELECT sequence_name FROM t_exams AS ex WHERE sc.sequence=ex.sequence AND sc.type=ex.type GROUP BY sequence_name)
它的执行过程是什么呢??
可以在头脑中想象一下,它大概的执行过程,逐条修改t_scoreuser表中的信息,通过子查询语句,筛选出准备修改成的内容。子查询语句,必须查出一个数据,不能是一组数据,所以要group by一下。
然后,逐条的进行修改,逐条的子查询,逐条的修改。直到完成所有行数据的修改。
最后一行的
WHERE sc.type=7 AND sc.sequence=2;
是对t_scoreuser起到了过滤作用,只修改符合条件的那些行记录。