将数据插入另一列条件的空(null)列

时间:2017-10-31 17:26:05

标签: mysql sql sql-update conditional-statements insert-into

我需要更新列,' ProvTypeDesc'在我的SQL表[LDH_Provider_Crosswalk]中。我已经创建了列并将所有值设置为null。

这需要从表[LevelofCareCrosswalk]上的列ProvType_Desc填充。思考过程是从[LDH_Provider_Crosswalk] t1更新ProvTypeDesc,其中ProvType_Desc来自[LevelofCareCrosswalk] t2,其中t1.provtype = t2.provtype。 (两个表都有provtype列,其中包含与prov类型描述相关的适当值。

我不确定我是否应该使用"插入"或者"更新"在这种情况下的声明。也许我应该使用另一种说法?无论如何,这是我的代码看起来像,但它不起作用。它只是将数据从t2附加到t1的底部。

我尝试插入声明:

INSERT INTO [LDH_Provider_Crosswalk] ([ProvTypeDesc])
SELECT t1.ProvType_Desc 
FROM [LevelofCareCrosswalk] t1
JOIN [LevelofCareCrosswalk] t2
ON t1.ProvType = t2.ProvType

我尝试更新声明:

UPDATE [LDH_Provider_Crosswalk]
SET t1.[ProvTypeDesc] = t2.ProvType_Desc
FROM [LDH_Provider_Crosswalk] t1 
JOIN [LevelofCareCrosswalk] t2
ON t1.ProvType = t2.ProvType

表中的示例数据:
[LDH_Provider_Crosswalk] t1(此表需要值)
ProvType | ProvTypeDesc
11 | NULL
43 | NULL
37 | NULL

表中的示例数据:
[LevelofCareCrosswalk] t2(此表包含值)
 ProvType | ProvTypeDesc
11 |危机接收中心
43 |治疗寄养 37 |以中心为基础的暂停

做了一点研究。看起来更新语句是可行的方法。

1 个答案:

答案 0 :(得分:0)

我明白了。我只需要从set语句中删除别名。

UPDATE [LDH_Provider_Crosswalk]
SET [ProvTypeDesc] = t2.ProvType_Desc
FROM [LDH_Provider_Crosswalk] t1 
JOIN [LevelofCareCrosswalk] t2
ON t1.ProvType = t2.ProvType