SQL:在SELECT语句中使用INSERT

时间:2009-07-09 01:06:21

标签: sql-server xml select insert

我有一个SQL SELECT语句,它将以XML格式创建结果。每次从原始SELECT语句中选择一行时,我想插入另一个表(Log via insert)。无论如何要在SELECT语句中包含INSERT语句吗?

    SELECT      cs_ads_StoreLocations.LocationGUID, *Bunch of Selects AS Distance 
FROM         *Bunch of Inter Joins*

WHERE     *Bunch of conditions*
ORDER BY *You don't want to know*
FOR XML AUTO

INSERT INTO cs_ads_StoreLog (LocationGUID) VALUES (*DISTINCT cs_ads_StoreLocations.LocationGUID from select statement above*)

这只是一些在SELECT语句之外有INSERT的示例代码。我需要在SELECT语句中运行它的东西或运行INSERT的其他方式

只是澄清一下。此示例代码是Stored Proc

的一部分

2 个答案:

答案 0 :(得分:1)

INSERT实际上会接受SELECT作为输入。您可以使用此命令(将您的SELECT复制为子查询,但您可以重构它以返回那些没有子查询的不同GUID ......但我需要看到整个怪物。)

insert into (cs_ads_StoreLog)
select distinct
    a.LocationGUID
from
    (SELECT
        cs_ads_StoreLocations.LocationGUID, *Bunch of Selects AS Distance 
    FROM
        *Bunch of Inter Joins*
    WHERE
        *Bunch of conditions*
    ORDER BY 
        *You don't want to know*
    ) a

然后,你可以返回你拥有的SELECT(它将被缓存,所以你不必担心性能命中太多)。

答案 1 :(得分:0)

也许动态SQL会解决这个问题?示例here。 或者,您可以将值存储在表var中,然后对其进行插入。