更新基于多个表的SQL Server 2005,2008数据单表(Update a single t

2019-09-03 20:45发布

我需要更新表one使用从表中的数据two 。 表中的一个和两个不被任何公共列(多个)的关系。 表three是与表two

例如:表一(reg_det表)

reg_det_id | reg_id | results
101        | 11     | 344

表2:(临时表)

venue                    | results
Anheim convention center | 355

表3(regmaster-TBL)

reg_id| venue
11    | Anaheim convention center

我需要使用从表中两个数据表中的一个更新的结果列。 但是,表一和二是不相关的。 表二,三和表一和三,你可以看到上面有关系。 任何人都可以请提出任何意见! 我需要的结果值在表中的一个355,这数据是从表2的到来,但是这两个都是不相关的,并且可以使用三个表有关。 很抱歉,如果它是混乱!

Answer 1:

非常坦率的:

UPDATE T1
SET result = t2.results
FROM [table one] T1
INNER JOIN [table three] t3
 on t1.reg_id = t3.reg_id
INNER JOIN [table two] T2
 on t2.venue = t3.venue


Answer 2:

几乎一个问题,而不是答案。 :)

你不能用一个隐含的内部联接?

UPDATE rd
   SET rd.results = tt.results
  FROM reg_det rd, regmaster rm, temptable tt
 WHERE rm.reg_id = rd.reg_id
   AND rm.venue = tt.venue;

我觉得更容易阅读,这句法在工作SELECT语句,用相同的意思明确的内连接。



Answer 3:

试试这个:

UPDATE rd
SET rd.results = t.results
FROM reg_det rd
JOIN regmaster rm ON rm.reg_id = rd.reg_id
JOIN temptable t ON t.venue = rm.venue
WHERE t.results = 355

我添加了一个WHERE子句,因为否则它会更新在regmaster和不是Temptable比赛所有reg_det记录。



文章来源: Update a single table based on data from multiple tables SQL Server 2005,2008