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