gpt4 book ai didi

sql-server - 使用相同 CTE 的两次更新

转载 作者:行者123 更新时间:2023-12-02 18:24:47 25 4
gpt4 key购买 nike

我必须“取消删除”树状文件夹(它们已被标记为已删除,我更改了标记的值)。每个文件夹可以包含文件或文件夹(存储在不同的表中)。我有一个 CTE,它定义了所有需要更新的文件夹。

 WITH arbre(id) AS(
SELECT idDossier
FROM portail_managers_dossier
WHERE idDossier = @id
UNION ALL
SELECT d.idDossier
FROM portail_managers_dossier AS d
INNER JOIN arbre AS a
ON a.id = d.idParent)

然后我有两个 UPDATE 请求,每个表一个

 UPDATE portail_managers_dossier
SET dtDateSuppr = NULL
WHERE idDossier IN (SELECT id FROM arbre);


UPDATE portail_managers_document
SET dtDateSuppr = NULL
WHERE idDossier IN (SELECT id FROM arbre);

我的问题是:我不知道如何合并不同表上的两个 UPDATE 请求。 CTE 仅存在到请求结束,因此我必须定义它两次。有没有办法在单个请求中编写上述所有代码?

最佳答案

正如您所发现的,CTE 在第一次更新后将失去范围。但是,为什么不使用 CTE,而是将 CTE 内的查询结果写入临时表,并根据临时表的内容进行更新?

关于sql-server - 使用相同 CTE 的两次更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com