[英]Update multiple rows based on unique values in another column in same table
我有一个有两列的表。 表列是名称和公司 ID,它们位于 [dbo].[Suppliers] 表中。
我只需要为唯一名称更新 CompanyID 值。
UPDATE [dbo].[Suppliers]
SET CompanyId = 46
WHERE Name IN
(
SELECT DISTINCT Name
FROM [dbo].[Suppliers]
);
IE
试图得到这个
Name CompanyID
A 5
B 5
C 5
A 5
看起来像:
Name CompanyID
A 6
B 6
C 6
A 5
不幸的是,我上面的查询并没有解决问题。
感谢任何和所有的帮助。 谢谢。
您可以使用通用表表达式为每个名称添加一个行号,然后更新该 CTE 但仅指定每个名称的第一行...
WITH
uniquely_identified AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY name ORDER BY companyID) AS name_row_id,
*
FROM
[dbo].[Suppliers]
)
UPDATE
uniquely_identified
SET
CompanyId = 46
WHERE
name_row_id = 1
;
示例: https : //dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=4b5eba30b3bed71216ec678e9cffa6b9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.