我为这个愚蠢的问题道歉,但是需要有人用简单的术语来解释为什么第一种选择效果最好。
问题:我有一个名为student的表,表结构如下所示
Student_id Student_name Subject1_marks Subject2_marks
001 John 11 0
002 Barack 12 1
003 McCain 12 0
现在,我需要将Subject1_marks设置为subject2_marks,其中Subject2_marks等于0
我写的SQL是:
第一个SQL:
update student set Subject2_marks = Subject1_marks
where Subject2_marks= 0;
第二个SQL:
update student a set a.Subject2_marks=b.Subject1_marks from student b
where a.student_id=b.student_id
and a.Subject2_marks= 0;
对我来说,第一个SQL工作得非常好,但第二个没有,需要帮助才能理解为什么第二个不起作用。
非常感谢任何简单的解释。
谢谢,
答案 0 :(得分:1)
您指定了a.Subject2_marks = 0
。但错过了本专栏的另一个表格。因此,对于student_id
,其他表中的所有行都将被连接,即使标记非零,该列也将再次更新n ..最后一次更新最终停留!
Student_id Student_name Subject1_marks Subject2_marks
001 John 11 0
001 John 13 2
002 Barack 12 1
003 McCain 12 0
在上面的数据001中,Student_id有2个标记详细信息,发生了什么,
左侧表格001-11-0
合格,另一侧有001-11-0,001-13-2
所以,A的1行将在此连接中更新两次,标记为11,下一个标记为13.顺序无法判断!。