将查询合并为一个并迭代多个唯一标识符

问题描述 投票:0回答:1

我试图看看是否有办法将CTE查询和更新查询组合到一个查询中。此外,我需要为多个“AttributeId”迭代以下查询,当我尝试在“in子句”中放置多个AttributeID时,它不会给我我想要的结果。是否有更好的方法来编写此查询,而不是为不同的属性ID反复重复相同的查询 - 是否像编写For Each循环一样编写它?非常感谢您的帮助! enter image description here

sql sql-server
1个回答
0
投票

是的,您可以从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
© www.soinside.com 2019 - 2024. All rights reserved.