高级SQL更新 - 用户定义的字段

时间:2014-07-11 15:46:11

标签: sql sql-server tsql

我有一个表,它使用了很多用户定义由名为 udfindex 的字段驱动的字段。这可以是数百个1到3位数字中的一个。与索引关联的键值是 udjoin

我的问题是这个。我需要更新与 udfindex 18相关的任何内容的 udvalue ,将其作为 udvalue 的最后两个字符绑定到 udfindex 31表示特定的 udjoins

示例:

我目前有

udjoin     | udfindex | udvalue 
12345-001  |    31    | Superior Court, San Francisco, CA  
12345-001  |    18    |  NULL  

如何运行SQL查询来更新与此 udjoin 关联的 udvalue 来表示以下内容:

udjoin     | udfindex | udvalue 
12345-001  |    31    | Superior Court, San Francisco, CA  
12345-001  |    18    |  CA

对此事项的任何协助将不胜感激。

致以最诚挚的问候,

-Nick

1 个答案:

答案 0 :(得分:1)

您可以使用一些过滤器在同一个表上进行联接。

类似的东西(当然先做一个选择,以确保在做这个更新之前你已经得到了你想要的东西)

update t1
set t1.udvalue = substring(t2.udvalue, LEN(t2.udvalue)-1, 2)
from yourTable t1
join yourTable t2 on t1.udjoin = t2.udjoin and t2.udfindex = 31
where t1.udfindex = 18
--and t1.udjoin ='something'

请参阅SqlFiddle