如何在SQL Server中使用CTE执行多个查询?
如何使用CTE执行多个查询。如何在SQL Server中使用CTE执行多个查询?
with
CTE1 as select (...)
,
CTE2 as select (...)
insert into table1 from CTE1
insert into table2 from CTE2
我收到一个错误Invalid object name CTE2
。它看不到我的CTE2
。它似乎只执行一个查询。在insert into table1 from CTE1
之后,它已经被编程为工作结束。如何强制它移动到代码的下一行。
你不能这样做使用CTE。
CTE仅在查询范围内可用,并且不能使用一个查询来执行两个insert
语句。
在你的情况,我只想做:
insert into table1 select ... /* the select you had in CTE1*/
insert into table2 select ... /* the select you had in CTE2*/
这是一个复杂的查询,我得到了。不会很容易: -/ – 2015-03-31 15:54:59
什么:
with CTE1 as select (...)
insert into table1 select <cols> from CTE1
GO
with CTE2 as select (...)
insert into table2 select <cols> from CTE2
GO
看起来很有前途,但不起作用。它永远工作。它只适用于将它作为单独查询运行的情况(每个查询都写在新窗口或新文件中)。然后一切都很快执行。 – 2015-03-31 15:38:51
我认为您的插入需要从CTE中进行选择。我更新了代码 - 我想你可以选择*,但我更喜欢看到命名列。 – 2015-03-31 16:40:31
我从table1和table2中删除了主键,现在它可以工作:-)我希望PK会有用,但只有障碍。 Mayby我应该在插入之前放下它们并在插入后重新创建它们? – 2015-03-31 16:57:10
没有看到完整的代码,看来你可能需要,因为你需要的CTE来使用临时表坚持。 – Taryn 2015-03-31 15:15:21
根据定义,CTE仅存在一个语句。作为一个简单的搜索可能已经表明你... – Andrew 2015-03-31 15:16:01
将安排它像'与CTE1做一些CTE1'和这里可能是一些分隔符,然后'与CTE2做一些CTE2'这样会工作吗? – 2015-03-31 15:25:51