【问题标题】:SQL: Variable to update a set of itemsSQL:更新一组项目的变量
【发布时间】:2014-07-17 16:15:43
【问题描述】:

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

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

前>

>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

【问题讨论】:

  • 您使用的是什么 DBMS?
  • 这会影响代码吗,因为我没有那个
  • 是的,它会的,是的,你确实拥有它。这是您正在使用的数据库,例如SQL ServerMySQLOracle...?
  • SQL 服务器,请原谅。

标签: sql database get set where


【解决方案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

【讨论】:

  • 我愿意,但显然需要 15 个代表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
相关资源
最近更新 更多