2014-01-21 96 views
-4

我不能讓一個存儲過程的以下位編譯雖然通過自身的查詢精運行:使用WITH..AS與UPDATE

UPDATE t 
     SET 
      requestType= sp.requestType 
     FROM #tempComp AS t, 
     (
      WITH CT AS 
      (
       ........   ) 
      SELECT x, y, z 
      FROM CT WHERE ab = 1 
     ) AS sp 
     WHERE t.Id = sp.Id 

請告訴我正確的方式來組織呢?

+0

你可以把公用表表達式 「之上」 的'UPDATE'例如'用CT AS(...)更新...' –

回答

2

什麼是正確的方式來組織這個?

根據the manual,CTE排在第一位。

[ WITH <common_table_expression> [...n] ] 
UPDATE ... 

你的情況:

WITH CT AS 
(
    ........ 
) 
UPDATE t 
SET requestType = sp.requestType 
FROM #tempComp AS t, 
    (SELECT x, y, z 
     FROM CT 
     WHERE ab = 1) AS sp 
WHERE t.Id = sp.Id