Update的简单问题
insert into t1 select * from t2 where ……
插入数据可以像上面那样写,Update可以像上面那种方式写吗?用一个表的数据去更新更一个表的数据,不想用set
问题点数:100、回复次数:13Top
1 楼gmlxf(烛光)回复于 2003-11-01 13:17:10 得分 0
update t1 set col1=(select col1 from t2),set col2=(select col2 from t2)...Top
2 楼zwx963536()回复于 2003-11-01 13:18:10 得分 0
楼上的那种写法不是更麻烦?Top
3 楼gmlxf(烛光)回复于 2003-11-01 13:18:10 得分 0
不用set好象不行吧。Top
4 楼zwx963536()回复于 2003-11-01 13:19:00 得分 0
因为有近20个字段要更新,我不想一个一个的写 colN=***Top
5 楼gmlxf(烛光)回复于 2003-11-01 13:20:32 得分 0
update tname set ..
要set的。Top
6 楼gmlxf(烛光)回复于 2003-11-01 13:21:12 得分 40
写好了一次以后就不要写了。Top
7 楼gmlxf(烛光)回复于 2003-11-01 13:22:16 得分 0
或者你可以
insert 新的一行,然后删除原来的。
不过有id号的要注意。将identity_insert 设置为onTop
8 楼pengdali()回复于 2003-11-01 13:36:21 得分 30
update 表1 set 表1.列1=表2.列1 from 表2 where 表1.id=表2.idTop
9 楼pengdali()回复于 2003-11-01 13:37:19 得分 0
update 表1 set 列1=tem.列1,列2=tem.列2,列3=tem.列3 ........ from 表2 as tem where 表1.id=表2.idTop
10 楼txlicenhe(马可)回复于 2003-11-01 13:41:59 得分 0
1:用set 一个个字段修改
2: 先delete,再insert
Top
11 楼zjcxc(邹建)回复于 2003-11-01 14:46:28 得分 0
update必须要逐个写字段
Top
12 楼zjcxc(邹建)回复于 2003-11-01 14:54:26 得分 30
--如果嫌写麻烦,可以用下面的类似下面的方法,动态生成SQL语句:
declare @tb1 sysname,@tb2 sysname
declare @sql varchar(8000)
select @tb1='表1' --被更新的表
,@tb2='表2' --取数据的表
,@sql='update '+@tb1+' set '
select @sql=@sql+a.name+'=b.'+b.name+','
from(
select name from syscolumns where object_id(@tb1)=id and status<>0x80
) a inner join(
select name from syscolumns where object_id(@tb2)=id and status<>0x80
) b on a.name=b.name --按字段名相同,如果按字段顺序,改用: a.colid=b.colid
set @sql=left(@sql,len(@sql)-1)
exec(@sql+' from '+@tb1+' a,'+@tb2+' b where 条件')Top
13 楼Dennis618(明月照沟渠)回复于 2003-11-01 16:01:27 得分 0
不用set?不行吧,先刪除原來的,再insert 進去.Top




