SQL Update查询,具有多个列,这些列的值作为单个查询从另一个表中获取
我想更新从PI表中选择的三列,即LCID、LCNo、AmendmentStatus,因此我编写了以下更新查询,这些查询已成功执行: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
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,