繁体   English   中英

如何在表中更新或插入CTE。 的SQL

[英]How to UPDATE or Insert CTE in a table. SQL

大家好,我一直在尝试在名为dbo.filemetadata.Source的列中插入以下代码的结果,这是代码:

WITH CTE AS 
(
  SELECT 
    rn, 
    ROW_NUMBER() OVER (PARTITION BY rn ORDER BY (SELECT  NULL)) filepartno,
    Split.a.value('.', 'VARCHAR(100)') AS filepart  
  FROM  
  (
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT  NULL)) rn,
     CAST ('<M>' + REPLACE(FilePath, '\', '</M><M>') + '</M>' AS XML) AS String  
    FROM  FileMetadata
  ) AS A 
  CROSS APPLY String.nodes ('/M') AS Split(a)
)
SELECT  FilePart AS A

FROM CTE C
  JOIN (SELECT  MAX(filepartno) maxfilepartno, rn 
        FROM CTE 
        GROUP BY rn) C2 ON C.rn = C2.rn AND C.filepartno = C2.maxfilepartno-1;

您可以像普通查询一样在CTE中结合使用INSERT和SELECT:

WITH CTE AS 
(
 ....
)
INSERT INTO ...
SELECT  FilePart AS A

FROM CTE ....

UPDATED FOR UPDATE语句

WITH CTE AS 
(
 ....
)
UPDATE FileMetaData 
SET SOURCE = FilePart

FROM FileMetaData INNER JOIN CTE ON ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM