2014-02-06 70 views
0

我需要使用另一個查詢的結果值更新表上的列。但是,接收表上的customerid列需要與查詢中的客戶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)) 

在上面的例子中我想從選擇查詢的p.PolicyId場插入PaymentFacilities表中的策略ID列,但只有其中的客戶ID字段PaymentFacilities與select查詢中的c.Id字段匹配。

感謝您的幫助

+2

什麼不行?錯誤信息?此外,這是一個插入,而不是一個更新.... –

+0

啊是的,有點更多的想法我想出了:UPDATE pf SET pf.PolicyId = p.PolicyId FROM dbo.PaymentFacilities AS pf INNER JOIN dbo .Customers爲C ON pf.CustomerId = c.Id INNER JOIN dbo.Policies爲p ON c.Id WHERE(NOT(p.PolicyReference IS NULL)AND p.Cancelled = 0)= p.CustomerId – Steve

+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)) 

請記住,這將插入multple行,每次運行查詢的時候,你也會有重複。

如果您描述整個問題,我相信人們可以幫助您找到更好的解決方案。