【发布时间】:2014-01-05 14:39:49
【问题描述】:
我为这个愚蠢的问题道歉,但需要有人简单地解释一下有什么区别以及为什么第一个选项效果最好。
问题:我有一个表叫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 工作得很好,但第二个没有,需要帮助来理解为什么第二个没有工作。
任何简单的解释将不胜感激。
谢谢,
【问题讨论】:
-
:第二条sql的语法错误如下,第一条sql是正确的,这样简单的更新不需要自连接同一张表
-
@user3040077 “需要帮助理解为什么第二个不起作用”,因为语法不正确。您应该对此类事情使用子查询。但在这种特殊情况下,这将是矫枉过正,坚持你的第一种方法。
标签: sql database oracle database-design oracle-sqldeveloper