使用嵌套的select查询插入另一个表

时间:2014-04-09 07:17:35

标签: mysql sql sql-server tsql

我有以下查询。

 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

这不符合我的情况。我应该怎么做

3 个答案:

答案 0 :(得分:0)

你不能这样做..

插入表格或更新表格。这两个查询不能一个一个地运行。

更好的选择是为此创建存储过程。

由于

答案 1 :(得分:0)

更新集A. [a] = A. [a] + C.value 从表A

GO

INSERT INTO Tablename(ID,Value     (SELECT ID,STUFF((SELECT&#39;,&#39; + P1.value FROM Table P1 WHERE P1.ID = P2.ID AND DATEDIFF(MI,LASTUPDATED,GETUTCDATE())&lt; = 15 FOR XML PATH (&#39;&#39),TYPE)。价值(&#39;(./ TEXT())[1]&#39;,&#39; VARCHAR(MAX)&#39),1 ,1,&#39;&#39;)AS别名FROM表P2))P3     ON A. [ID] = P3.ID

答案 2 :(得分:0)

您可以创建一个由您的更新或插入驱动的触发器;通过这种方式,您将链接两个事件。您需要决定哪个事件触发另一个事件,具体取决于您的应用程序。