1

好吧,标题很复杂。我基本上想做的事情:

我希望我的存储过程向用户显示该过程所做的“结果表”之类的东西。但是我在使用“INSERT INTO”语句插入子查询值或表变量数据时遇到了极端问题。

需要插入到我的结果表中的数据(作为@resulttable 删除)来自 2 个不同的表。并来自我之前声明的表变量(@allupdateditermIDs)。

我已经尝试过这些脚本来实现这一点:

    INSERT INTO @resulttable (UpdatedItemID, UpdatedItemName, NewProbability)
SELECT * FROM @allupdateditemIDs ORDER BY ItemNum ASC,
SELECT ItemName FROM ti_Item WHERE ItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY ItemNum ASC,
SELECT MixingProbability FROM ti_ItemMixingInfo WHERE TargetItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY TargetItemNum ASC

这个也没有“,”或者这个:

    INSERT INTO @resulttable (UpdatedItemID, UpdatedItemName, NewProbability)
VALUES ((SELECT * FROM @allupdateditemIDs ORDER BY ItemNum ASC),
(SELECT ItemName FROM ti_Item WHERE ItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY ItemNum ASC),
(SELECT MixingProbability FROM ti_ItemMixingInfo WHERE TargetItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY TargetItemNum ASC))

我已经在很多网站上搜索了,但是我找不到任何有用的东西,因为我没有从 1 个表中获取表变量的数据,而是从许多表中获取它们。

我真的很感谢你的帮助。提前致谢 ;)

4

2 回答 2

2

试试这个——

INSERT INTO @resulttable 
(
      UpdatedItemID
    , UpdatedItemName
    , NewProbability
)
SELECT  
      t.ItemNum
    , tt.ItemName
    , tmi.MixingProbability
FROM @allupdateditemIDs t
JOIN dbo.ti_Item tt ON tt.ItemNum = t.ItemNum
JOIN dbo.ti_ItemMixingInfo tmi ON tmi.TargetItemNum = t.ItemNum
ORDER BY t.ItemNum
于 2013-04-30T08:23:06.663 回答
1

我认为你可以在你的选择查询中加入所有三个表来获得这样的正确数据:

INSERT INTO @resulttable (UpdatedItemID, UpdatedItemName, NewProbability)   
    SELECT @allupdateditemIDs.ItemNum,ti_Item.ItemName,ti_ItemMixingInfo.MixingProbability 
    FROM @allupdateditemIDs Inner join ti_Item 
    ON ti_Item.ItemNum =@allupdateditemIDs.ItemNum inner join ti_ItemMixingInfo
    on ti_ItemMixingInfo.TargetItemNum=@allupdateditemIDs.ItemNum   
    ORDER BY @allupdateditemIDs.ItemNum ASC
于 2013-04-30T08:00:22.500 回答