更新相同的行
问题描述:
我有一个表像下面: 当前更新相同的行
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
答
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
+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'
你能也是'UPDATE'发生后发布预期的结果? –
更新了问题 – SmartestVEGA
请仔细阅读您的要求,就好像您对这个问题一无所知并想想自己......这是否有意义?因为我不知道你想要什么。用户不应该一遍又一遍地阅读,并尝试解决。讲清楚。 – Tanner