运用带关系子查寻Update句子升级数据信息的方式

2021-02-14 05:28| 发布者: | 查看: |

Update是T-sql中再简易但是的句子了,update table set column=expression [where condition],大家都是采用。但update的使用方法不但在此,真实在开发设计的情况下,灵便适当地应用update能够做到事倍功半的实际效果。

假设有表Table1(a,b,c)和Table2(a,c),如今Table1中一些纪录字段名c为null,要依据字段名a在Table2中搜索,取下字段名a相同的字段名c的值来升级Table1。一种基本的构思,根据游标解析xmlTable1中字段名c为null的全部纪录,在循环系统身体搜索Table2并开展升级,即用游标Cursor的方式。检测sql句子以下:

--1.建立检测表
 create TABLE Table1
 a varchar(10),
 b varchar(10),
 c varchar(10),
 CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
 a ASC
 ) ON [PRIMARY]
 create TABLE Table2
 a varchar(10),
 c varchar(10),
 CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
 a ASC
 ) ON [PRIMARY]
 --2.建立检测数据信息
 Insert into Table1 values('赵','asds',null)
 Insert into Table1 values('钱','asds','100')
 Insert into Table1 values('孙','asds','80')
 Insert into Table1 values('李','asds',null)
 Insert into Table2 values('赵','90')
 Insert into Table2 values('钱','100')
 Insert into Table2 values('孙','80')
 Insert into Table2 values('李','95')
 select * from Table1
 --3.根据游标方法升级
 declare @name varchar(10)
 declare @score varchar(10)
 declare mycursor cursor for select a from Table1 where c is null
 open mycursor
 fetch next from mycursor into @name
 while(@@fetch_status = 0)
 BEGIN
 select @score=c from Table2 where a=@name
 update Table1 set c = @score where a = @name
 fetch next from mycursor into @name 
 close mycursor
 deallocate mycursor
 --4.显示信息升级后的結果
 select * from Table1
 --5.删掉检测表
 drop TABLE Table1
 drop TABLE Table2

尽管用游标能够完成,但编码看上去很繁杂,实际上用Update依据子关系来升级要是一条句子便可以拿下了,检测编码以下:

--1.建立检测表
 create TABLE Table1
 a varchar(10),
 b varchar(10),
 c varchar(10),
 CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
 a ASC
 ) ON [PRIMARY]
 create TABLE Table2
 a varchar(10),
 c varchar(10),
 CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
 a ASC
 ) ON [PRIMARY]
 --2.建立检测数据信息
 Insert into Table1 values('赵','asds',null)
 Insert into Table1 values('钱','asds','100')
 Insert into Table1 values('孙','asds','80')
 Insert into Table1 values('李','asds',null)
 Insert into Table2 values('赵','90')
 Insert into Table2 values('钱','100')
 Insert into Table2 values('孙','80')
 Insert into Table2 values('李','95')
 select * from Table1
 --3.根据Update方法升级
 Update Table1 set c = (select c from Table2 where a = Table1.a) where c is null
 --4.显示信息升级后的結果
 select * from Table1
 --5.删掉检测表
 drop TABLE Table1
 drop TABLE Table2

参照材料:或许是被忽视的update句子,update 子查寻

<
>

 
QQ在线咨询
售前咨询热线
18720358503
售后服务热线
18720358503
返回顶部