我需要使用另一个查询结果的值更新表上的列。但是,接收表上的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字段匹配的位置。
感谢您的帮助
答案 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))
请记住,这会插入多行,每次运行查询时,您都会有重复项。
如果您描述整个问题,我相信人们可以帮助您找到更好的解决方案。