2

我有两张桌子;

技术查询表

OSID  OSValue  

1     UNIX             
2     ORACLE            
3     .NET 
4     SQL    
5     SAP  

------------------

员工技术

empID   OSID

34      1
37      2
45      2
34      4
45      6

员工 ID NO 37 不再使用 ORACLE。他转向了 SAP。即 OSID 应该在第二个表中从 2 更新为 5。

我有一个临时表,其中包含技术和员工 ID 的值

请帮助我 - 编写一个连接以上两个表的查询 - 查找 SAP 技术的 ID,并使用该 ID 更新第二个表。

Update emp
Set emp.OSID = (Select OSID from technologylookup where OSValue = tmptbl.technologyname)
FROM employee_tech emp INNER JOIN #Temptbl tmptbl ON emp.emp_id = tmptbl.emp_id
4

3 回答 3

3

将您的查找表加入临时表,然后使用该表中的 ID 更新 employee_tech 表

Update emp
   Set emp.OSID = tl.OSID
FROM employee_tech emp 
INNER JOIN #Temptbl tmptbl 
   ON emp.emp_id = tmptbl.emp_id
INNER JOIN technologylookup tl
   ON tl.OSValue COLLATE DATABASE_DEFAULT = tmptbl.technologyname
于 2012-09-24T20:22:41.653 回答
0

在我的脑海中,未经测试:

update employee_tech
set osid = t.osid
from #Temptbl tmp
inner join employee_tech e on e.emp_id = tmp.emp_id
inner join technologylookup t on t.osvalue = tmp.technologyname
于 2012-09-24T20:23:14.667 回答
0

如果临时表中的“技术”等于 ID,则可以这样更新。

UPDATE employee_tech
SET OSID = (SELECT technology FROM #Temptbl AS T INNER JOIN employee_tech AS E ON T.empID = E.empID)
于 2012-09-24T20:23:24.733 回答