SQL中如何遍历表并更新某个字段的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中如何遍历表并更新某个字段的值相关的知识,希望对你有一定的参考价值。

有一个表Table_A,其中有一个字段Field_1,我要遍历并更新所有的Field_1的值,其中Field_1的值是Table_A和Table_B通过Inner Join联合查询得到的一个字符串

也就是将Table_A.Field_1的值更新为Table_A.Field_1+Table_B.Field_2
数据库是SQL2005
我省略了Inner Join的结构,其实不止是一个Join,应该说Table_A的某个键是Table_B的外键,但是既不是Field_1也不是Field_2,也就是Inner Join与要更新的字段无关
Field_1和Field_2都是varchar

update Table_A
Set Field_1 = A.Field_1+B.Field_2
From Table_A A
Inner Join Table_B B
On A.xxx = B.xxx

说明如下
这是一个模式 on 后面的a.xxx 是Table_A的某个键 ,B.xxx 是Table_B的某个键。 A.xxx = B.xxx 这两个键的关系是主键与外键的关系,并且这两个键是1对1的关系!
参考技术A 请详细说明数据库以及版本
说明inner join的条件
说明Field_1和Field_2字段的类型
否则无法解答
参考技术B update Table_A
set Field_1=Table_A.Field_1+Table_B.Field_2
where Table_B.键=Table_A.B的外键键
参考技术C update Table_A
Set Field_1 = A.Field_1+B.Field_2
From Table_A A
Inner Join Table_B B
On A.xxx = B.xxx
参考技术D 二楼正解

sql语言 如何将一个字段的值的一部分赋给另外一个字段

例如:把字段TDZL内容为“XXX村西北 ”的“XXX村”赋址给另外一个字段TXDZ的值为“AA区BB镇XXX村”。

Final=TXDZ + substr(TDZL,y,z)

其中Final为最终所得字段,y是你想截图的TDZL字段的开始位置,你这个例子中y=1,z是你从y位置开始要截取的长度,比如你的“***村”长度为9,那么z就换成9就行了。追问

XX村的长度和内容是不固定的,但已知的是截取到包括“村”之前的所有内容,同时增加固定的AA区BB镇到XX村之前,这个是不是没办法了

追答

有办法:再调用一个函数就行,如下:
FINAL=TXDZ.apend(select SUBSTRING('TDZL',1,charindex('村','TDZL')))
如有有哪里不明白意思就问

参考技术A update 表格名称 set TDZL="AA区BB镇XXX村" where TDZL="XXX村西北"

以上是关于SQL中如何遍历表并更新某个字段的值的主要内容,如果未能解决你的问题,请参考以下文章

SQL:如何将一个表中某个字段的值全部更新到另外一个表相应的字段

SQLSERVER如何在数据库里根据某个字段,查出该表名字

sql 如何更新某个字段的时间为当前时间

SQL如何根据一个字段的某个关键词的前面部分分组查询

遍历数据透视表并删除相同的值

Mysql如果某个字段值存在则更新另一个字段的值为原值+100,命令应该如何写?