如果没有CTE,这个SQL查询可以简化吗



我不是SQL开发人员。下面是我的DBA希望我进一步简化的代码。希望你们能看看并帮助如何进一步简化这个查询。这里可以不使用CTE吗?谢谢

;     
WITH CTE_tmp1(RecId, Newdata, Changecode) AS       
(  
SELECT RecId, Newdata, Changecode
FROM dbo.POLL
WHERE Changecode = 1
)
UPDATE dbo.POLL
SET  RecId = T.Newdata
FROM  dbo.POLL  P
INNER JOIN CTE_tmp1  T
ON  P.RecId = T.RecId
WHERE P.Changecode IS NOT NULL AND P.Changecode <> 1

`

您并不真正需要CTE
UPDATE语句中使用表POLL的自联接
还有条件:

P.Changecode IS NOT NULL

不需要,因为你有:

P.Changecode <> 1

它将过滤掉nulls。

UPDATE P
SET P.RecId = T.Newdata
FROM POLL P INNER JOIN POLL T
ON P.RecId = T.RecId
WHERE P.Changecode <> 1 AND T.Changecode = 1

相关内容

  • 没有找到相关文章

最新更新