2016-01-05 63 views
1

我有2個表:CRM_InquiriesICS_Subscribers。 CRM_Inquiries具有主鍵InquiryID和外鍵SubID以將該表與ICS_Subscribers以及FnameLname相關聯。 ICS_Subscribers的主關鍵字爲SubID,列SubFirstNameSubLastName。我需要運行查詢來檢索CRM_Inquiry行,並使用ICS_Subscriber表中的SubFirstName和SubLastName更新Fname和Lname值。我希望這是有道理的..用子表值更新表

我寫了一個腳本來完成這個,但我想知道是否有更好的方法來做到這一點。

CREATE TABLE #inq(
InquiryID INT, 
SubID INT 
) 

INSERT INTO #inq 
SELECT DISTINCT InquiryID, SUbId 
FROM CRM_Inquiries 
WHERE LName = 'Poe' AND SubID IS NOT NULL 


DECLARE @totalCount INT 
SELECT @totalCount = COUNT(*) FROM #inq 

PRINT @totalCount 

WHILE(@totalCount > 0) 
BEGIN 

DECLARE @subId varchar(250) 
DECLARE @inquiryID INT 

SELECT TOP 1 @subId = subID, @inquiryID = inquiryID FROM #inq 

PRINT 'SubID = ' + @subID 
PRINT 'InquiryID= ' + CAST(@inquiryId AS VARCHAR(MAX)) 

UPDATE CRM_Inquiries 
SET FName = (SELECT SubFirstName FROM ICS_Subscribers WHERE SubID = @subId), 
LName = (SELECT SubLastName FROM ICS_Subscribers WHERE SubID = @subId) 
WHERE InquiryID = @inquiryID 

DELETE FROM #inq WHERE InquiryID = @inquiryID 


SELECT @totalCount = COUNT(*) FROM #inq 
PRINT @totalCount 
END 


DROP TABLE #inq 

LName ='Poe'完全是任意的,我有一個更復雜的查詢,但爲了我剛創建的例子。

回答