use*_*533 11 sql sql-server-2005 sql-server-2008
我需要one使用表中的数据更新表two.表1和表2与任何常用列无关.表three与表有关two.
例如:表一(reg_det表)
reg_det_id | reg_id | results
101 | 11 | 344
Run Code Online (Sandbox Code Playgroud)
表二:(临时表)
venue | results
Anheim convention center | 355
Run Code Online (Sandbox Code Playgroud)
表三(regmaster-tbl)
reg_id| venue
11 | Anaheim convention center
Run Code Online (Sandbox Code Playgroud)
我需要使用表2中的数据更新表一中的结果列.但是第一和第二表没有关系.如上所示,表二和三以及表一和三是相关的.任何人都可以建议任何想法!我需要在表1中将结果值设置为355,并且此数据来自表2,但这两个是无关的,并且可以使用表3来关联它们.对不起,如果它令人困惑!
MBu*_*ava 13
非常坦率的:
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
Run Code Online (Sandbox Code Playgroud)
几乎是一个问题,而不是一个答案。:)
您不能使用隐式内部联接吗?
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;
Run Code Online (Sandbox Code Playgroud)
我发现它更易于阅读,并且此语法在SELECT语句中起作用,其含义与显式内部联接相同。
尝试这个:
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
Run Code Online (Sandbox Code Playgroud)
我添加了一个 WHERE 子句,因为否则它将更新 regmaster 和 temptable 中具有匹配项的所有 reg_det 记录。
| 归档时间: |
|
| 查看次数: |
65626 次 |
| 最近记录: |