SQL循环查询

SQL循环查询,sql,sql-server,sql-server-2008,sql-server-2005,sql-server-2000,Sql,Sql Server,Sql Server 2008,Sql Server 2005,Sql Server 2000,我有一张临时桌子,看起来像 t可接受: ID(not unique) Platform Name OS version 13 UNIX Ipad 5.1 13 Windows Windows 2008 14 MAC Ipad 4.

我有一张临时桌子,看起来像

t可接受:

          ID(not unique)   Platform Name    OS    version 

           13                 UNIX          Ipad     5.1
           13                 Windows       Windows  2008
           14                 MAC           Ipad     4.1
查找Tbl:对于上述每一列

    PlatformName LookuP Tbl: platform id  desc
                                 2        Unix
                                 5        windows

       OS Lookup            :  OS id    OSname
                                 4       Ipad

    Version Lookup          :  Version id  name
                                 5         5.1
然后有EmpPlatformID、EmpOSID和EmpVersionID,如下所示

       EmpPlatform  - EmpId  PltformNameID
                       13         1
                       13         6
       same for OS & ID 
我需要一个关于 1使用查找表为每个员工ID的每个columnPlatformName、OS、Version获取相应的ID。 2在每个实际表中插入该empid的ID

所以,empPlatformTable应该是这样的

       EmpPlatform  - EmpId  PltformNameID
                       13         1
                       13         6
                       13         2    - new row added from tmptbl
                       13         5    - new row added from tmptbl
 The EmpOS & EmpVer also has similar column so the emp id should have corresponding IDs inserted from temptbl . please helps
编辑: 更新PlatformName的代码

Update EmpPN 
    Set EmpN.platform_id = PLookup.platform_id 
from #TempTable tmpd (READUNCOMMITTED) 
inner join EmpPlatform EmpPN (READUNCOMMITTED) 
    on EmpPN.emp_id = emp_id collate database_default 
inner join PlatformLookUpTbl PLookup(READUNCOMMITTED)
    on PLookup.[platform_name] = tmpd.PlatformName collate database_default
为什么不呢

Update EmpPN
Set 
Platform_ID = 
  (
    Select Top 1 L.Platform_ID From PlatformLookupTbl As L
    Inner Join #TempTable As T On L.PlatForm_Name = T.PlatFormName
    Where T.Emp_ID = EmpPN.Emp_ID
  ),
<next field> = 
  <analogous lookup statement>[,...]

如果性能不好,考虑在你的临时表上创建索引来帮助。

你能发布你迄今为止的代码,并且让我们知道你在哪里有问题吗?我强烈建议当你考虑解决这些问题时,停止思考Word循环。这方面没有任何东西可以通过使用循环以任何方式进行优化。无法获得解决方案。我们可以使用游标吗?@user1681514为什么要使用游标?