更新相同的行

问题描述:

我有一个表像下面: 当前更新相同的行

Column1 Column2 column3 
    ------------------------- 
    abc  cat1  1 
    efg  cat1  3 
    hij  cat1  2 
    klm  cat2  1 
    nop  car2  2 
    qrs  cat2  3 

我想更新COLUMN1,即当匹配的匹配CAT2,考虑排又一排CAT1所有行会为ID更新它匹配列3个IDS

预计

Column1 Column2 column3 
------------------------- 
klm  cat1  1 
qrs  cat1  3 
nop  cat1  2 
klm  cat2  1 
nop  car2  2 
qrs  cat2  3 
+1

你能也是'UPDATE'发生后发布预期的结果? –

+0

更新了问题 – SmartestVEGA

+0

请仔细阅读您的要求,就好像您对这个问题一无所知并想想自己......这是否有意义?因为我不知道你想要什么。用户不应该一遍又一遍地阅读,并尝试解决。讲清楚。 – Tanner

Use below query : 

CREATE TABLE #Table (Column1 VARCHAR(100),Column2 VARCHAR(100), Column3  
VARCHAR(100)) 

INSERT INTO #Table (Column1 , Column2 , Column3 ) 
SELECT 'abc','cat1',1 UNION ALL 
SELECT 'efg','cat1',3 UNION ALL 
SELECT 'hij','cat1',2 UNION ALL 
SELECT 'klm','cat2',1 UNION ALL 
SELECT 'nop','cat2',2 UNION ALL 
SELECT 'qrs','cat2',3 


UPDATE #Table SET Column1 = A.Column1 
FROM 
(
    SELECT Column1 , Column3 
    FROM #Table 
    WHERE Column2 = 'cat2' 
)A WHERE #Table.Column2 = 'cat1' AND A.Column3 = #Table.Column3 

SELECT * FROM #Table 

http://rextester.com/QYHLTE44670

+0

@ SmartestVEGA,上面的查询是否给你预期的结果..? – Mansoor

请下面的代码尝试:

DECLARE @Table TABLE 
    (Column1 VARCHAR(100),Column2 VARCHAR(100), Column3 INT) 

    INSERT INTO @Table VALUES 
    ('abc','cat1',1), 
    ('efg','cat1',3), 
    ('hij','cat1',2), 
    ('klm','cat2',1), 
    ('nop','cat2',2), 
    ('qrs','cat2',3) 

    UPDATE 
    t 
    SET t.Column1 = d.Column1 
    FROM @Table t INNER JOIN @Table d 
    ON t.Column3 = d.Column3 
    WHERE d.Column2 ='cat2'