目前我的数据集中有一个特定字段,其中一些记录没有值;模式中允许该字段为NULL。
但是,有时,此数据会根据ID填充到数据库中的其他记录中。
我想运行一个查询,根据数据库其余部分的内容,使用适当的值更新这些NULL字段。假设这些字段永远不会有冲突的值。
例如:
ID Identifier Address Name OrderID
123 23 Sheppard Court David 465464322
456 100100100100 29 Milestone Cres Terry 651654986
789 200200200200 102 Dynamo Drive Joseph 397431357
123 300300300300 23 Sheppard Court David 516198532
上例中的记录是唯一的,但第一行没有填充“标识符”字段。
我想运行一个查询,允许我使用正确的值快速更新此缺少的字段,在这种情况下为300300300300。
答案 0 :(得分:1)
假设这些字段永远不会有冲突的值。
如果这是一个有效的假设,那么这是迄今为止最简单的解决方案(假设“ID”是您计划用于回填值的主键):
UPDATE tableName a
SET identifier = (
SELECT distinct identifier
FROM tableName b
WHERE a.id = b.id
AND identifier IS NOT NULL)
WHERE identifier IS NULL
您可以使用MERGE INTO
语法获得更好的体验,但我不确定它是否可用于访问。
答案 1 :(得分:0)
更新所有遗失的标识符。
UPDATE yourTable t1
SET t1.Identifier =
(SELECT TOP 1 Identifier FROM yourTable
WHERE t1.Identifier IS NOT NULL)
WHERE t1.Identifier IS NULL
<强>旁注:强> 你怎么可能有这么乱的数据? 通常,从不必须在您的数据库上启动此类更新。
另外,你的桌子上有主键吗?因为我无法看到一个,而且几乎在任何一张桌子上都有必须。