我试图看看是否有办法将CTE查询和更新查询组合到一个查询中。此外,我需要为多个“AttributeId”迭代以下查询,当我尝试在“in子句”中放置多个AttributeID时,它不会给我我想要的结果。是否有更好的方法来编写此查询,而不是为不同的属性ID反复重复相同的查询 - 是否像编写For Each循环一样编写它?非常感谢您的帮助!
是的,您可以从CTE结果更新表。
我已经在过去做过这个,如果你想看到它,我已经建立了this SQL Fiddle作为例子。
因此,您需要将UPDATE语句与FROM子句结合使用,并在WHERE中指定“join”条件,如下所示:
;WITH CTE
AS
(
-- Fill the data you want to update
SELECT personID, COUNT(1) AS count
FROM person_movies
GROUP BY personID
)
-- Update statement. You can use SELECT, UPDATE, INSERT or DELETE
UPDATE persons
-- Specify the columns you want to update
SET moviecount = CTE.count
-- Specify the source, in this case is from the CTE
FROM CTE
-- How can we "link" the results in both tables? Specify it here
WHERE persons.personID = CTE.personID