簡體   English   中英

使用子查詢更新CTE上的語句

[英]Update statement on a cte with subquery

我有一個CTE,基本上可以根據某些條件過濾數據,但事實是,過濾后我需要更新這些記錄以“更正”它們,但是我在UPDATE語句中得到了4104

當我直接調用變量時,我沒有問題,但是在進行計算的地方卻出現了錯誤,因為我從第一個和第二個查詢中調用了變量。

;WITH CTE AS
(
    SELECT ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY timestmp ASC) order,
    *
    FROM TSTSOLAP T
    (
        --SECOND QUERY
        SELECT 1 FROM TABLE1 T2 
        WHERE --CONDITIONS MET
            t.user_id = t2.id_user AND
            T.ID_TIP = T2.ID_TIP AND
            T.ID <> t2.ID AND 
            (T2.BEG BETWEEN T.BEG AND T.END)
            OR T2.BEG = T.END
    )

)
UPDATE CTE SET STAT=0, END = (T2.END - 1) --HERE IS WHERE I GET THE: Msg 4104, Level 16, State 1, Line 1
WHERE ORDER> 1
GO

我怎么稱呼非鏈接變量?

*代碼縮短,因為長度

只做一個JOIN怎么樣?

WITH toupdate AS (
      SELECT . . . ,
             ? as order
      FROM table1
     )
UPDATE T
    SET STAT = 0,
        END = (T2.END - 1)
    FROM T JOIN
         table2 T2 
         ON . . . <conditions here>
WHERE T.ORDER > 1;

根據子查詢中的條件,您可能仍然需要EXISTS子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM