更新子查询中null的记录

时间:2011-10-13 15:49:43

标签: sql-server-2008

我一直试图让这个查询工作时间最长,我想也许我没有正确看待它。基本上我有一个表中的记录,我试图找到它们的数据冲突的位置。示例我有一个不是主键的字段,但我想查找其他列数据不相同的所有事件  例: 所以基本上如果我有两个johns并且它们都有不同的地址我想更新我的表以使它们具有相同的,即使一个John有一个空地址。我想出了

UPDATE Table
SET Address =Address 
SELECT * FROM Table WHERE Address != Address

但这似乎不起作用

2 个答案:

答案 0 :(得分:1)

UPDATE t1
    SET address = t2.address
    FROM YourTable t1
        INNER JOIN YourTable t2
            ON t1.Name = t2.Name
    WHERE t1.PrimaryId <> t2.PrimaryId
        AND t1.address IS NULL
        AND t2.address IS NOT NULL

答案 1 :(得分:0)

假设您要使用Table1值更新Table2,并且在两个表上都存在一个名为ID的列,用于链接数据:

UPDATE t2
SET t2.Address = t1.Address
FROM Table2 as t2
INNER JOIN table1 t1
ON t1.Id = t2.Id

更新:

根据您的评论,如果您只想更新table2中的空值,请使用:

UPDATE t2
SET t2.Address = t1.Address
FROM Table2 as t2
INNER JOIN table1 t1
ON t1.Id = t2.Id
WHERE t2.Address is null