2017-03-29 42 views
0

我有一個表像下面: 當前更新相同的行

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

回答

1
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

0

請下面的代碼嘗試:

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'