2009-07-09 177 views
1

我有一個SQL SELECT語句,它將以XML格式創建其結果。每次從原始SELECT語句中選擇一行時,我想插入另一個表(通過插入記錄)。無論如何,在SELECT語句中包含INSERT語句?SQL:在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的方式中,只是爲了澄清。此示例代碼是存儲過程的一部分

+0

埃裏克的答案是我會建議的,但你似乎堅持在SELECT中插入INSERT - 這是什麼原因。 此外,您似乎認爲您可以對SELECT返回的每一行執行一些操作 - 不要忘記這是基於集合的處理 - SELECT的結果是一組行,而不是集合個別行。 – 2009-07-09 11:25:34

回答

0

也許動態SQL可以解決這個問題?示例here。 或者,也許你可以將值存儲在表var中,然後對其進行插入。

+0

示例代碼是Stored Proc的一部分。我只是試圖找到一種將INSERT包括進去的方法。 – user135356 2009-07-09 02:15:57

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(它會被緩存,所以你不必擔心性能命中太多)。