更新脚本无法按预期工作?

时间:2012-03-15 17:55:15

标签: sql sql-update

我需要为给定的X,MONTH和YEAR值更新STATUS ='R' 和STATUS ='C'表示前一年的所有内容。

(我使用变量而不是X,MONTH和YEAR的硬编码值,下面的语句只是我正在尝试的一个例子)

update A set STATUS = 'R' 
where X =1 
and MONTH = 7
and YEAR = 2011;

update A set STATUS = 'C' 
where X = 1
and MONTH < 7
and  YEAR <= 2011 
and  YEAR >= 2011 -  1;

输出就像(输出错误):

....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

现在我们可以看到第一个更新查询工作正常。 现在我期待将以上所有内容更改为STATUS ='C' 但它不适用于2010年的第7至12个月。

请建议。 Oracle 9i Enterprise Edition release 9.2.8.0 - 64 bit Production

2 个答案:

答案 0 :(得分:0)

在您的第二次更新中,您只将其设置为MONTH&lt; 7,所以它更大的地方没有做任何事情

答案 1 :(得分:0)

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;

这是有效的