-1

目前,我的数据集中有一个特定字段,其中一些记录没有值;该字段在架构中允许为 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。

4

2 回答 2

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语法更感兴趣,但我不确定是否可以访问。

于 2013-07-08T19:04:31.307 回答
0

更新所有丢失的标识符。

UPDATE yourTable t1
SET t1.Identifier = 
(SELECT TOP 1 Identifier FROM yourTable 
WHERE t1.Identifier IS NOT NULL)
WHERE t1.Identifier IS NULL

旁注: 你怎么可能有这么乱的数据?通常,您永远不必在数据库上启动此类更新。

另外,您的表中有主键吗?因为我看不到一个,而且几乎在任何桌子上都是必须的。

于 2013-07-08T19:18:38.407 回答