我有一个tUser列有username, password, email,的表Active。
我需要将Active重复行的列设置为 0。我怎样才能做到这一点?
例如:表值是
UserName Password Email Active
-----------------------------------------------
Demo demo abc@gmail.com 1
Demo demo abc@gmail.com 1
Demo demo abc@gmail.com 1
Run Code Online (Sandbox Code Playgroud)
我需要将此值更改为
Demo demo abc@gmail.com 1
Run Code Online (Sandbox Code Playgroud)
其他 2 行应该是
Demo demo abc@gmail.com 0
Demo demo abc@gmail.com 0
Run Code Online (Sandbox Code Playgroud)
一旦您的表中有一个唯一标识每一行的主键,那么您就可以使用 CTE 和这种方法来清除任何重复项:
;WITH Duplicates AS
(
SELECT
UserID, Username, Password, Email, Active,
RowNum = ROW_NUMBER() OVER (PARTITION BY Username, Email ORDER BY UserID)
FROM
tUser
)
UPDATE tUser
SET Active = 0
FROM Duplicates d
WHERE d.UserID = tUser.UserID
AND d.RowNum > 1
Run Code Online (Sandbox Code Playgroud)