--------------------------------
比如一个表:
姓名,基本工资,奖金,补贴
aaaa,897,88,10
bbbb,1000,2000,50
cccc,2000,500,60
我想实现,将奖金字段的值全部并入到基本工资中,让奖金列全为固定值20,补贴为原奖金的一半如何一条语句实现呢?
以前遇到过,这种情况,不好在同一条语句中处理?
6 个解决方案
#1
update 表名 set 基本工资=基本工资+奖金,奖金=20,补贴=奖金/2 where 条件
#2
这只是一个例子,
我想问共性的问题,就是一条update,改写多个字段,但是多个字段间有计算关系时,如何保证不出错,有什么原则呢?
我想问共性的问题,就是一条update,改写多个字段,但是多个字段间有计算关系时,如何保证不出错,有什么原则呢?
#3
没什么原则 依次修改就得了
#4
create table a(a varchar(20),b int,c int,d int)
insert a select 'aaaa',897,88,10
union all select 'bbbb',1000,2000,50
union all select 'cccc',2000,500,60
update a set d=c/2,b=c+b,c=20
select * from a
--result
/*a b c d
-------------------- ----------- ----------- -----------
aaaa 985 20 44
bbbb 3000 20 1000
cccc 2500 20 250
(所影响的行数为 3 行)
*/
#5
declare @table table
(
姓名 varchar(10),
基本工资 int not null,
奖金 int not null,
补贴 int not null
)
insert into @table 'aaaa',897,88,10
union all
select 'bbbb',1000,2000,50
union all
select 'cccc',2000,500,60
update @table set 基本工资=基本工资+奖金,奖金=20,补贴=奖金/2 where 姓名 in(select 姓名 from @table)
#6
按从前往后修改,修改的字段不能重复
#1
update 表名 set 基本工资=基本工资+奖金,奖金=20,补贴=奖金/2 where 条件
#2
这只是一个例子,
我想问共性的问题,就是一条update,改写多个字段,但是多个字段间有计算关系时,如何保证不出错,有什么原则呢?
我想问共性的问题,就是一条update,改写多个字段,但是多个字段间有计算关系时,如何保证不出错,有什么原则呢?
#3
没什么原则 依次修改就得了
#4
create table a(a varchar(20),b int,c int,d int)
insert a select 'aaaa',897,88,10
union all select 'bbbb',1000,2000,50
union all select 'cccc',2000,500,60
update a set d=c/2,b=c+b,c=20
select * from a
--result
/*a b c d
-------------------- ----------- ----------- -----------
aaaa 985 20 44
bbbb 3000 20 1000
cccc 2500 20 250
(所影响的行数为 3 行)
*/
#5
declare @table table
(
姓名 varchar(10),
基本工资 int not null,
奖金 int not null,
补贴 int not null
)
insert into @table 'aaaa',897,88,10
union all
select 'bbbb',1000,2000,50
union all
select 'cccc',2000,500,60
update @table set 基本工资=基本工资+奖金,奖金=20,补贴=奖金/2 where 姓名 in(select 姓名 from @table)
#6
按从前往后修改,修改的字段不能重复