Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Update查询,具有多个列,这些列的值作为单个查询从另一个表中获取_Sql - Fatal编程技术网

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

SQL Update查询,具有多个列,这些列的值作为单个查询从另一个表中获取,sql,Sql,我想更新从PI表中选择的三列,即LCID、LCNo、AmendmentStatus,因此我编写了以下更新查询,这些查询已成功执行: UPDATE #TempTableOne SET LCID=(SELECT ISNULL(ExportLCID,0) FROM ExportLC WHERE ExportLCID= (SELECT LCID FROM [PI] WHERE PIID=(SELECT PIID FROM Job WHERE JobID=T

我想更新从PI表中选择的三列,即LCID、LCNo、AmendmentStatus,因此我编写了以下更新查询,这些查询已成功执行:

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
                                   )
                       )
               )

因为我想加快我的查询

将查询更改为关闭连接应该会使查询速度更快:

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 

将查询更改为关闭联接将使其速度更快:

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 

如果我使用如下聚合函数:PIQty=SELECT ISNULLSUMQty,0 FROM PIProducts,其中PIID=SELECT PIID FROM Job,其中JobID=TT.OrderID,ProductID=TT.ProductID,-samconcejqy=SELECT isnullsumadqty,0 FROM PIProducts,其中PIID=SELECT PIID FROM Job,其中JobID=TT.OrderID,ProductID=TT.ProductID,-samconcejvalue=SELECT ISNULLSUMAdjValue,0来自PIProducts,其中PIID=SELECT PIID来自JobID=TT.OrderID和ProductID=TT.ProductID的作业,如果我使用聚合函数,如:PIQty=SELECT ISNULLSUMQty,0来自PIProducts,其中PIID=SELECT PIID来自JobID=TT.OrderID和ProductID=TT.ProductID的作业,-SAMCONCEJQTY=SELECT ISNULLSUMAdjQty,0来自PIProducts,其中PIID=SELECT PIID来自JobID=TT.OrderID且ProductID=TT.ProductID,-SAMCONCEJVALUE=SELECT ISNULLSUMAdjValue,0来自PIProducts,其中PIID=SELECT PIID来自JobID=TT.OrderID且ProductID=TT.ProductID,