使用其他2个表上的查询结果更新表

时间:2014-02-06 09:32:01

标签: sql

我需要使用另一个查询结果的值更新表上的列。但是,接收表上的customerid列需要与查询中的customer id列匹配。

到目前为止,这是我的查询:

INSERT INTO PaymentFacilities
(PolicyId)

(SELECT        c.Id, p.PolicyId
FROM            Customers c INNER JOIN
                     Policies p ON c.Id = p.CustomerId
WHERE        (NOT (p.PolicyReference IS NULL) AND p.Cancelled = 0))

在上面的示例中,我想将select查询中的p.PolicyId字段插入PaymentFacilities表的PolicyId列,但仅限于PaymentFacilities的CustomerId字段与select查询中的c.Id字段匹配的位置。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

select语句中的列数应与insert语句相同。

您可以尝试删除除p.PolicyId1以外的所有列:

INSERT INTO PaymentFacilities
(PolicyId)

(SELECT        p.PolicyId
FROM            Customers c INNER JOIN
                     Policies p ON c.Id = p.CustomerId
WHERE        (NOT (p.PolicyReference IS NULL) AND p.Cancelled = 0))

请记住,这会插入多行,每次运行查询时,您都会有重复项。

如果您描述整个问题,我相信人们可以帮助您找到更好的解决方案。