Sql 更新脚本未按预期工作?
我需要更新给定值X、月份和年份的STATUS='R' 在上一年之前的所有事情都是“C” (我使用变量而不是硬编码的X、月和年值,下面的stations只是我尝试的一个示例) 现在,第一个更新查询工作正常,正如我们在上面看到的。 现在我希望将上面的所有内容都更改为class='C' 但它不适用于2010年的7到12个月 请建议。Sql 更新脚本未按预期工作?,sql,sql-update,Sql,Sql Update,我需要更新给定值X、月份和年份的STATUS='R' 在上一年之前的所有事情都是“C” (我使用变量而不是硬编码的X、月和年值,下面的stations只是我尝试的一个示例) 现在,第一个更新查询工作正常,正如我们在上面看到的。 现在我希望将上面的所有内容都更改为class='C' 但它不适用于2010年的7到12个月 请建议。 Oracle 9i Enterprise Edition 9.2.8.0版-64位生产版在您的第二次更新中,您只将其设置为
Oracle 9i Enterprise Edition 9.2.8.0版-64位生产版
在您的第二次更新中,您只将其设置为<7个月,因此如果它的值更大,则它不会执行任何操作更新集合状态='R'
update A set STATUS = 'R'
where X =1
and MONTH = 7
and YEAR = 2011;
update A set STATUS = 'C'
where X = 1
and YEAR = 2011
and MONTH < 7
update A set STATUS = 'C'
where X = 1
and YEAR = 2011 - 1;
其中X=1
月份=7
年份=2011年;
更新集合状态='C'
其中X=1
年份=2011年
月<7
更新集合状态='C'
其中X=1
年份=2011-1年;
这是有效的是的,我理解,但我对此非常陌生……只是学习……不知道如何弥补/更新……也可能是所有这些都可以使用单个更新语句来完成。因此,如果您不想在少于7个月的时间内使用它,请删除where子句的该部分,如果我需要,请将其移动到R状态(对于第一次查询更改的行)将更改回C
....X YEAR MONTH STATUS
....1 2010 1 C
....1 2010 2 C
....1 2010 3 C
....1 2010 4 C
....1 2010 5 C
....1 2010 6 C
....1 2010 7 R //Actually this shoud be updated to C
....1 2010 8 R //Actually this shoud be updated to C
....1 2010 9 R //Actually this shoud be updated to C
....1 2010 10 R //Actually this shoud be updated to C
....1 2010 11 R //Actually this shoud be updated to C
....1 2010 12 R //Actually this shoud be updated to C
....1 2011 1 C
....1 2011 2 C
....1 2011 3 C
....1 2011 4 C
....1 2011 5 C
....1 2011 6 C
....1 2011 7 R
update A set STATUS = 'R'
where X =1
and MONTH = 7
and YEAR = 2011;
update A set STATUS = 'C'
where X = 1
and YEAR = 2011
and MONTH < 7
update A set STATUS = 'C'
where X = 1
and YEAR = 2011 - 1;