SQL:用于更新一组项的变量

时间:2014-07-17 16:15:44

标签: sql database get set where

所以,每个项目都有一个id,一个setId和一个名字。

当前数据可能只在整个集合中填写一个NAME字段。

EX>

>ID = 1 >NAME = 'Bob' >SETID = 5
>ID = 2 >NAME = NULL  >SETID = 5
>ID = 3 >NAME = NULL  >SETID = 5
>ID = 4 >NAME = NULL  >SETID = 5

我正在寻找一个SQL脚本来获取“SET”中非空的一条记录 为“NAME”记录设置“SET”中的剩余项目。

我的目标最终结果如下:

>ID = 1 >NAME = 'Bob' >SETID = 5
>ID = 2 >NAME = 'Bob' >SETID = 5
>ID = 3 >NAME = 'Bob' >SETID = 5
>ID = 4 >NAME = 'Bob' >SETID = 5

1 个答案:

答案 0 :(得分:1)

假设集合中只有一个Name非空,您可以使用CTE并执行以下操作:

;WITH NameHelper AS 
(
    SELECT
        Name,
        SetID
    FROM MyTable
    WHERE Name IS NOT NULL
    GROUP BY Name, SetID
)

UPDATE MyTable SET Name = NameHelper.Name
FROM MyTable
    INNER JOIN NameHelper ON MyTable.SetID = NameHelper.SetID