【发布时间】:2023-03-16 18:15:01
【问题描述】:
我遇到了一个表的问题,该表的某些行缺少数据,我需要从与标题匹配的另一行复制 Artist 列
Plays | Title | Artist
------+--------------------------+----------------
107 | Superstition | Stevie Wonder
96 | Superstition | NULL
158 | Patience | Guns n Roses
9 | Patience | NULL
112 | Promised You A Miracle | Simple Minds
99 | Promised You A Miracle | NULL
159 | Baker Street | Gerry Rafferty
132 | Baker Street | NULL
我已经阅读了一些关于 SO 的其他问题,这些问题让我有了这个 UPDATE 语句:
UPDATE MetaDataTable
SET Artist = (SELECT TOP 1 Artist FROM MetaDataTable t
WHERE (Title = t.Title) AND t.Artist IS NOT NULL)
WHERE Artist IS NULL
最终结果是 TOP 1 Artist 被复制到所有 NULL Artist 列,而不是具有匹配 Title 的 Artist。
Plays | Title | Artist
------+--------------------------+----------------
107 | Superstition | Stevie Wonder
96 | Superstition | Stevie Wonder
158 | Patience | Guns n Roses
9 | Patience | Stevie Wonder
112 | Promised You A Miracle | Simple Minds
99 | Promised You A Miracle | Stevie Wonder
159 | Baker Street | Gerry Rafferty
132 | Baker Street | Stevie Wonder
我想要的是这样的:
Plays | Title | Artist
------+--------------------------+----------------
107 | Superstition | Stevie Wonder
96 | Superstition | Stevie Wonder
158 | Patience | Guns n Roses
9 | Patience | Guns n Roses
112 | Promised You A Miracle | Simple Minds
99 | Promised You A Miracle | Simple Minds
159 | Baker Street | Gerry Rafferty
132 | Baker Street | Gerry Rafferty
Artist 为 NULL 的行可以在表中的任何位置,并且不严格低于具有相同标题的完整行。
谢谢!
【问题讨论】:
标签: sql sql-server tsql