Here's a test script that shows @gotqn answer works:
-- create table
CREATE TABLE DupUpdateTest
(
Id INT NOT NULL PRIMARY KEY IDENTITY( 1, 1 ),
TransId INT NOT NULL,
OriginalName VARCHAR(MAX),
StrippedName VARCHAR(MAX),
ParentId INT NULL
)
GO
-- insert data
INSERT INTO dbo.DupUpdateTest VALUES (2, 'name 1', 'name1', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (3, 'name 1', 'name1', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (6, 'name 1', 'name1', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (8, 'name 2', 'name2', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (11, 'name 2', 'name2', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (15, 'name 55', 'name55', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (23, 'name 55', 'name55', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (99, 'name 100', 'name100', NULL)
INSERT INTO dbo.DupUpdateTest VALUES (122, 'name 108', 'name108', NULL)
-- update parent id match
UPDATE dt
SET dt.ParentId = COALESCE(dt1.TransId, dt.TransId ) -- Returns the first nonnull expression among its arguments
FROM dbo.DupUpdateTest dt
LEFT JOIN dbo.DupUpdateTest dt1
ON dt.StrippedName = dt1.StrippedName
-- view results
SELECT * FROM dbo.DupUpdateTest