Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक बार इस्तेमाल करने के बाद मैं अपने सीटीई तक क्यों नहीं पहुंच पा रहा हूं?

आपके उदाहरण कोड में, सीटीई केवल अद्यतन के लिए बनी रहती है। यदि आपको इसे लंबे समय तक चलने की आवश्यकता है, तो इसके साथ #tempTable या @tableVariable को पॉप्युलेट करने पर विचार करें, और फिर उनमें से अद्यतन करें और हटाएं।

आप OUTPUT का उपयोग करने के लिए अपने अद्यतन को बढ़ा सकते हैं। क्लॉज, निम्न की तरह, ताकि आप प्रभावित पंक्तियों को कैप्चर कर सकें। और DELETE में उनका उपयोग करें, जैसे यहाँ:

set nocount on
DECLARE @Table     table (PK int, col1 varchar(5))
DECLARE @SavedPks  table (PK int)

INSERT INTO @Table VALUES (1,'g')
INSERT INTO @Table VALUES (2,'g')
INSERT INTO @Table VALUES (3,'g')
INSERT INTO @Table VALUES (4,'g')
INSERT INTO @Table VALUES (5,'x')
INSERT INTO @Table VALUES (6,'x')
set nocount off

;WITH MYCTE
AS 
(
  SELECT PK, col1 FROM @Table
)
UPDATE MYCTE
    SET col1='xyz'
    OUTPUT INSERTED.PK
        INTO @SavedPks
    WHERE col1='g'

SELECT 'A',* FROM @Table

DELETE @Table
    WHERE PK IN (SELECT PK  from @SavedPks)

SELECT 'B',* FROM @Table

आउटपुट:

(4 row(s) affected)
     PK          col1
---- ----------- -----
A    1           xyz
A    2           xyz
A    3           xyz
A    4           xyz
A    5           x
A    6           x

(6 row(s) affected)

(4 row(s) affected)

     PK          col1
---- ----------- -----
B    5           x
B    6           x

(2 row(s) affected)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql . का उपयोग करके दिनांक फ़ील्ड से महीने के अनुसार समूह कैसे करें

  2. क्या SQL सर्वर चुनिंदा क्वेरी में DATEADD गणना को अनुकूलित करता है?

  3. लिंक रिकॉर्ड की श्रेणी का चयन

  4. SQL सर्वर में CONVERT () के साथ उपलब्ध दिनांक स्वरूपों की सूची

  5. SQL सर्वर में BCP कमांड का उपयोग करके xml डेटा निर्यात करें