16

我需要one使用表中的数据更新表two。表一和表二没有任何共同的列相关。表three与表有关two

例如:表一(reg_det 表)

reg_det_id | reg_id | results
101        | 11     | 344

表二:(临时表)

venue                    | results
Anheim convention center | 355

表三(regmaster-tbl)

reg_id| venue
11    | Anaheim convention center

我需要使用表二中的数据更新表一中的结果列。但表一和表二不相关。如上所示,表二和三和表一和三是相关的。任何人都可以请提出任何想法!我需要表一中的结果值为 355,并且该数据来自表 2,但这两个是不相关的,可以使用表三将它们关联起来。对不起,如果它是混乱的!

4

3 回答 3

16

非常坦率的:

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
于 2013-05-16T20:22:25.777 回答
7

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

你不能使用隐含的内部连接吗?

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语句中起作用,与显式内部连接具有相同的含义。

于 2015-12-02T22:18:19.370 回答
1

尝试这个:

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 记录。

于 2013-05-16T20:21:09.723 回答