2014-04-09 61 views
0

我有以下查詢。使用嵌套的select查詢插入到另一個表中

UPDATE A SET A.[a]=A.[a]+C.value 
FROM Table A INNER JOIN 
(SELECT ID, STUFF((SELECT ','+P1.value FROM Table P1 WHERE P1.ID=P2.ID AND DATEDIFF(MI,LASTUPDATED,GETUTCDATE()) <=15 FOR XML PATH(''),TYPE).VALUE('(./TEXT())[1]','VARCHAR(MAX)'),1,1,'') AS alias FROM Table P2) P3 
ON A.[ID]=P3.ID 

所以我想插入從上述查詢中的select語句中提取的ID和字符串值到另一個表中。 我認識路是可以達到這個目標即

insert into tablename(columns) 
select (columns) from table. 

所以我想結合同樣的事情在我的嵌套查詢,這假設應該像。

UPDATE A SET A.[a]=A.[a]+C.value 
    FROM Table A INNER JOIN 
    (INSERT INTO Tablename(ID,Value) 
    (SELECT ID, STUFF((SELECT ','+P1.value FROM Table P1 WHERE P1.ID=P2.ID AND DATEDIFF(MI,LASTUPDATED,GETUTCDATE()) <=15 FOR XML PATH(''),TYPE).VALUE('(./TEXT())[1]','VARCHAR(MAX)'),1,1,'') AS alias FROM Table P2)) P3 
    ON A.[ID]=P3.ID 

這不適用於我的情況。我應該怎麼做這個

+1

當你做這樣的更新時,你將無法進行插入操作。拆分這兩個陳述。更新,然後插入,或插入,然後更新。無論你想要什麼 – user3036342

+0

什麼是C.value? –

+1

爲什麼這個問題被標記爲[tag:mysql]? MySQL是Oracle公司擁有的開放源代碼的跨平臺RDBMS,它與微軟專有的SQL Server產品競爭。此外,從你的問題中不清楚你想要完成什麼;也許前後的一些示例數據有助於說明? – eggyal

回答

0

你不能這樣做..

無論是在表中插入或更新表。這兩個查詢不能作爲一個運行。

更好的選擇是爲此創建一個存儲過程。

由於

0

更新一組A. [α] = A。[α] + C.value FROM表A

GO

INSERT INTO表名(ID,價值 (SELECT ID,STUFF((SELECT','+ P1.value FROM Table P1 WHERE P1.ID = P2.ID AND DATEDIFF(MI,LASTUPDATED,GETUTCDATE())< = 15 FOR XML PATH(''),TYPE).VALUE ('(./TEXT())[1]','VARCHAR(MAX)'),1,1,'')AS別名FROM表P2))P3 ON A. [ID] = P3.ID

0

您可以創建由更新或插入驅動的觸發器;這樣你就可以鏈接兩個事件。您需要決定哪個事件觸發另一個事件,具體取決於您的應用程序。

相關問題