2015-02-27 3 views
-2
table_1 
(
    c1 int 
    ,c2 int 
    ,c3 int 
); 

insert into table_1 values (1,2,3); 

update table_1 
    set c2 = c2 + 5 --c2's value suppose to be 7 now 
    ,c3 = c2 + c1; --c3's value suppose to be 7 + 1 = 8 now 

select c1, c2, c3 from table_1; 

result: 1, 7, 3; 

Результат должен быть: 1, 7, 8.SQL обновления в Teradata

Но значение С3 еще 3, никаких изменений не было сделано.

Извините за мой английский.

+0

обновление table_1 набор c2 = c2 + 5 --c2 в значение, предполагают, чтобы быть 7 Теперь , c3 = c2 + c1 --c3-х значение предполагают, чтобы быть 7 + 1 = 8 Теперь ; – user3201738

ответ

1

UPDATE оператор использует значения "до" UPDATE, т.е.

c2 = c2 + 5 => 2 + 5 = 7 
but 
c3 = c2 + c1 => 1 + 2 = 3 

Исполняет так:

SQL>create table table_1 (c1 int ,c2 int ,c3 int); 
SQL>insert into table_1 values (1,2,3); 
SQL>update table_1 
SQL& set c2 = c2 + 5 --c2's value is set to 7 now 
SQL& ,c3 = c2 + c1; --c3's value is set to 2 + 1 = 3 now 

        1 row updated 

SQL>select c1, c2, c3 from table_1; 
     c1   c2   c3 
=========== =========== =========== 
      1   7   3 

        1 row found 

Можно даже перемещать значения между столбцами:

SQL>update table_1 set c3 = c2, c2 = c1, c1 = c3; 

        1 row updated 

SQL>select c1, c2, c3 from table_1; 
     c1   c2   c3 
=========== =========== =========== 
      3   1   7 

        1 row found 

Чтобы обновить столбцы один за другим, после друг друга, используйте отдельный UPDATE заявлений:

SQL>create table table_1 (c1 int ,c2 int ,c3 int); 
SQL>insert into table_1 values (1,2,3); 
SQL>update table_1 
SQL& set c2 = c2 + 5; -- c2's value suppose to be 7 now 

        1 row updated 

SQL>update table_1 
SQL& set c3 = c2 + c1; -- c3's value suppose to be 7 + 1 = 8 now 

        1 row updated 

SQL>select * from table_1; 
     c1   c2   c3 
=========== =========== =========== 
      1   7   8 

        1 row found 
+0

Тогда как я могу получить результаты 1, 7, 8; – user3201738

+0

@ user3201738, выполните два отдельных UPDATE, см. Отредактированный ответ. – jarlh

Смежные вопросы