[英]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.