具有多个列的SQL Update Query,其值从另一个表作为单个查询获取

时间:2012-05-14 03:31:19

标签: sql

我想更新三列,即LCID,LCNo,AmendmentStatus,它们是从PI Table中选择的,所以我写下了Update Query,它们是成功执行的:

UPDATE  #TempTableOne  
    SET     
            LCID=(SELECT ISNULL(ExportLCID,0) FROM ExportLC WHERE ExportLCID= (SELECT LCID FROM [PI] WHERE PIID=(SELECT PIID FROM Job WHERE JobID=TT.OrderID))),
            LCNo=(SELECT ISNULL(ExportLCNo,'') FROM ExportLC WHERE ExportLCID= (SELECT LCID FROM [PI] WHERE PIID=(SELECT PIID FROM Job WHERE JobID=TT.OrderID))),
            AmendmentStatus=(SELECT AmendmentStatus FROM ExportLC WHERE ExportLCID= (SELECT LCID FROM [PI] WHERE PIID=(SELECT PIID FROM Job WHERE JobID=TT.OrderID))),      

    FROM    #TempTableOne  AS TT
    WHERE TT.OrderType=3

但更新查询是否可能执行单个查询,如:

Update  #TempTableOne    
   SET  SELECT LCID = ISNULL(ExportLCID,0) ,
        LCNo=ISNULL(ExportLCNo,''), 
        AmendmentStatus=AmendmentStatus 
  FROM  ExportLC 
  WHERE ExportLCID = (SELECT LCID 
                        FROM [PI] 
                       WHERE PIID=(SELECT PIID 
                                     FROM Job 
                                     WHERE JobID=TT.OrderID
                                   )
                       )
               )

因为我想加快我的查询

1 个答案:

答案 0 :(得分:3)

将您的查询更改为使用JOINS可以加快速度:

Update  #TempTableOne    
   SET  LCID = ISNULL(lc.ExportLCID,0) ,
        LCNo=ISNULL(lc.ExportLCNo,''), 
        AmendmentStatus=lc.AmendmentStatus 
  FROM #TempTableOne tt  
  JOIN  Job on Job.JobID = TT.OrderID
  JOIN  [PI] on [PI].PIID = Job.PIID
  JOIN ExportLC lc on [PI].LCID = lc.ExportLCID