> 馆藏中心

两个update against one table in MSSQL 2008R2

来源:cnblogs 编辑:杨丽

update table1 a set a.c  =  (select  b.b from table2  b where a.a=b.a)另外,如果在抄a.a=b.a的情况下袭,如果b.b有多个值的bai话也会报错du这个时候,你可以考虑用zhib.b的最大值dao或最小值update table1 a set a.c  =  (select  max(b.b) from table2  b where a.a=b.a),看结果应该是使用Union ALL合并查询结果,而不是表关联示例select * from 表Aunion allselect * from 表B表A和表B的列格式必须一致,且数量一致,一、当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一32313133353236313431303231363533e59b9ee7ad9431333337616439种写法,虽然传统,但结构清晰。并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!1.update t1     set t1.c2 = t2.c2   fro m t2 where t1.c1 = t2.c12.Update t1     set t1.c2 = t2.c2fro m t1 inner join t2     on t1.c1 = t2.c1二、FROM 子句中指定的表的别名不能作为 SET column_name 子句中被修改字段的限定符使用。  例如,下面的内容无效:UPDATE titlesSET t.ytd_sales = t.ytd_sales + s.qtyFROM titles t, sales sWHERE t.title_id = s.title_idAND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)若要使上例合法,请从列名中删除别名 t 或使用本身的表名。1.UPDATE titlesSET ytd_sales = t.ytd_sales + s.qtyFROM titles t, sales sWHERE t.title_id = s.title_idAND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)2.UPDATE titlesSET titles.ytd_sales = t.ytd_sales + s.qtyFROM titles t, sales sWHERE t.title_id = s.title_idAND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales),Update hwsp set hwshl=0from spkfk bwhere hw='HWI00000001' and hwshl>0 and a.spid=b.spid and tongym like'%2',update hwsp set hwshl = 0 from hwsp , spkfk bwhere hw='HWI00000001' and hwshl>0 and hwsp.spid=b.spid and tongym like'%2'www.179s.com防采集请勿采集本网。

proc 的代码贴出来收获园豆:5

============================================

我说楼主你写的下面这个存储过程已经差不多对了,就是多了个‘ ,’号,就是两个update语句中间的逗号··· CREATE PROCEDURE Change_name AS UPDATE A SET name='小明' , UPDATE B SET name='小明'

Thanks!我有多个版本, 都有问题:

能,但是你说的不清楚,写个语句你看看,能否受到启示。 UPDATE 表名 SET 字段1= CASE WHEN 条件1 THEN 1 ELSE 0 END, 字段2= CASE WHEN 条件2 THEN 0 ELSE 1 END 意思你理解了,就会写了,这里的值我用1和0代替的,具体的看你的是啥了。 用case

version 2 so far.

你说的太笼统了 假设每个居民的机构代码都能从机构表中找到机构代码, 且对应的上级机构不会再有上级机构 用以下SQL就可以更新 UPDATE INHABITANT T1 SET T1.JGBM = (SELECT T2.SJJGBM FROM INSTITUTION T2 WHERE T2.JGBM = T1.JGBM) 执行后 有

@Name varchar(100)declare @statement1 varchar(100);

看结果应该是使用Union ALL合并查询结果,而不是表关联 示例 select * from 表Aunion allselect * from 表B表A和表B的列格式必须一致,且数量一致

set @statement1 =

没见过这么用的,估计不行,如果真的需要这么更新可以尝试触发器。

'update tb_menu3 set selected = 1 where mid in ('+ @Name + ')';

print @statement1

exec @statement1;update tb_menu3 set selected = 1 where mid in ('m013','m042','m104')

Msg 2812, Level 16, State 62, Procedure usp_newSelectedQuickMenu, Line 27

Could not find stored procedure 'update tb_menu3 set selected = 1 where mid in ('m013','m042','m104')'.version2 so far, I had something at least, but still issue remains.

OK. above was my grammar.

Now, I made changes on:

to exec (@statement1);fromexec @statement1;It seems update works.version1. did not work

create procedure xxx as

(

@Name varchar(100)

)

begin

Begin Try

Begin TransAction

update tb_menu3

set selected = 0

where selected = 1update tb_menu3set selected = 1where mid in (@Name)Commit TransActionEnd TryBegin CatchRollback TransActionEnd Catchend

============================================

我说楼主你写的下面这个存储过程已经差不多对了,就是多了个‘ ,’号,就是两个update语句中间的逗号··· CREATE PROCEDURE Change_name AS UPDATE A SET name='小明' , UPDATE B SET name='小明'

It looks worked. Please checked below details:create procedure xyz

(

@Name varchar(100)

)

AS

BEGIN

SET NOCOUNT ON;

update tb_menu3 set selected = 0;declare @statement1 varchar(100);

set @statement1 =

没见过这么用的,估计不行,如果真的需要这么更新可以尝试触发器。

'update tb_menu3 set selected = 1 where mid in ('+ @Name + ')';

--print @statement1

exec( @statement1);It looks like the variable @NAME had issues.

@NAME is from an aspx page, and I was using Jquery to build a string and assigned to @NAME.

It might be the issue of HTML code or plan text code. I got confused on this.But, so far, this is a workable version.Many thanks for your help.

UPDATE [CompanyInfo] SET [Content] = 'aa',SET [ImgUrl] = 'a.JPG' WHERE [ID]=5--SQL语句 规范关键字大写 表名字段 用[],UPDATE CompanyInfo SET Content = 'aa' ,ImgUrl = 'a.JPG'WHERE Id = 5;这样就可以了 是这样,UPDATE CompanyInfo SET Content = 'aa',ImgUrl = 'a.JPG' WHERE Id = 5你是要这样?这样是可以的本回答被网友采纳内容来自www.179s.com请勿采集。

本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。本文《两个update against one table in MSSQL 2008R2》转载自cnblogs,版权归原作者所有,若侵权请联系:E-MAIL:513175919@qq.com
违法违规信息请立即联系本网可获得现金奖励,TEL:1-8-2-1-0-2-3-3-3-8-1(电话仅供违法违规信息举报,侵权类信息请EMAIL。)

www.179s.com false 互联网 http://www.179s.com/jsblogcnk/pd/pddxdh.html report 6736 proc 的代码贴出来收获园豆:5============================================Thanks!我有多个版本, 都有问题:version 2 so far.@Name varchar(100)declare @statement1 varchar(100);set @statement1 ='update tb_menu3 set selected = 1 where mid in ('+ @Name + ')';print @s

热门图片

经济金融企业管理法律法规社会民生科学教育降生活体育运动文化艺术电子数码电脑网络娱乐休闲行政地区心理分析医疗卫生