我有2个表,如下所述
create table #temp(id int, userid int,age int) insert into #temp values (1,1,1) insert into #temp values(2,1,2) insert into #temp values(3,1,3) create table #tempMOCK(id int, userid int,age int) insert into #tempMOCK values (6,1,7) insert into #tempMOCK values (7,1,9)
我想在#temp表上更新Mock表的前两行。我期待那个年龄的rowid 2& 3应该成为7& 9.我正在使用此查询但不知何故它不起作用。
UPDATE t1 SET t1.age = t2.age FROM #temp t1 INNER JOIN #tempMOCK t2 ON t1.userid = t2.userid where t1.id in (1,2)
答案 0 :(得分:0)
由于用户ID在所有行中都相同,因此您可以获得相同的年龄值 这可以使用CTE来解决,如下所示:
;with cte as
(
select id, userid, age, ROW_NUMBER() OVER(order by id) rn
FROM #tempMock
)
UPDATE t1
SET t1.age = t2.age
FROM #temp t1
INNER JOIN cte t2 ON t1.userid = t2.userid and t1.id = t2.rn+1;
答案 1 :(得分:0)
您可以尝试以下查询:
UPDATE #temp1 set age=(Select t2.age from #tempMOCK t2
where t2.userid=#temp1.userid) where id in (1,2)
希望有所帮助