Tsql 如何使用上一个查询的结果插入到表中

Tsql 如何使用上一个查询的结果插入到表中,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,早上好 我正在使用前面查询的结果填充一个多对多表,如下所示 WITH Temp AS ( SELECT UserID, Result FROM <Master_Table> WHERE UserID IN (SELECT Name FROM Users) ) INSERT INTO UserDecisions (User_Id, Decision_Id) VALUES ( (

早上好

我正在使用前面查询的结果填充一个多对多表,如下所示

WITH Temp AS
(
    SELECT      UserID, Result 
    FROM        <Master_Table>
    WHERE       UserID IN (SELECT Name FROM Users)
)   
INSERT INTO UserDecisions 
    (User_Id, Decision_Id)
    VALUES
    (
        (SELECT Id FROM Users WHERE Temp.UserID = Users.Name),
        (SELECT Id FROM Decisions WHERE Temp.Result = Decisions.Name)
    )
请问您如何解决这个问题?Temp子查询是否需要是临时表?

您需要将其作为SELECT而不是VALUES子句写入:


我认为,问题是,您尝试在其中插入一个值列表,因为这两个值选择返回列表,而不仅仅是一个值。
Msg 4104, Level 16, State 1, Line 22
The multi-part identifier "Temp.UserID" could not be bound.
Msg 4104, Level 16, State 1, Line 23
The multi-part identifier "Temp.Result" could not be bound.
WITH Temp AS
(
    SELECT      UserID, Result 
    FROM        <Master_Table>
    WHERE       UserID IN (SELECT Name FROM Users)
)   
INSERT INTO UserDecisions 
    (User_Id, Decision_Id)
    SELECT u.Id,d.Id
    FROM Temp t
    INNER JOIN Users u ON t.UserID = u.Name
    INNER JOIN Decisions d ON t.Result = d.Name