Sql 使用子表值更新表

Sql 使用子表值更新表,sql,sql-server,Sql,Sql Server,我有两个表:CRM\u查询和ICS\u订户。CRM\u Inquiries具有主键InquiryID和外键SubID,用于将表与ICS\u订户以及Fname和Lname关联。ICS_订阅服务器具有主键SubID和列SubFirstName和SubLastName。我需要运行一个查询来检索CRM_查询行,并使用ICS_订阅服务器表中的SubFirstName和SubLastName更新Fname和Lname值。我希望这是有道理的 我写了一个脚本来实现这一点,但我想知道是否有更好的方法来做到这一点

我有两个表:
CRM\u查询
ICS\u订户
。CRM\u Inquiries具有主键
InquiryID
和外键
SubID
,用于将表与
ICS\u订户
以及
Fname
Lname
关联。ICS_订阅服务器具有主键
SubID
和列
SubFirstName
SubLastName
。我需要运行一个查询来检索CRM_查询行,并使用ICS_订阅服务器表中的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'是完全任意的,我有一个更复杂的查询,但为了刚才创建的示例,我创建了这个查询