Sql server TSQL对由WITH定义的表的多次使用
我想我可能误解了为什么使用with命令。但是有人能看出我做错了什么吗。 我想做一个查询,并将结果用于两件事。首先,我想使用这些值向另一个表中插入一些内容。然后我想向用户显示结果 所以我有类似的东西Sql server TSQL对由WITH定义的表的多次使用,sql-server,tsql,with-statement,Sql Server,Tsql,With Statement,我想我可能误解了为什么使用with命令。但是有人能看出我做错了什么吗。 我想做一个查询,并将结果用于两件事。首先,我想使用这些值向另一个表中插入一些内容。然后我想向用户显示结果 所以我有类似的东西 With temp as ( Select * from Table1 ) INSERT INTO Table2 (table1_id) select id from temp SELECT * from temp 我得到 错误:无效的对象名称“temp”。SQLState:S0002 错误代码
With temp as (
Select * from Table1
)
INSERT INTO Table2 (table1_id) select id from temp
SELECT * from temp
我得到
错误:无效的对象名称“temp”。SQLState:S0002
错误代码:208
这不是with命令的作用吗?来自:
公共表表达式(CTE)可以看作是临时的
在单个对象的执行范围内定义的结果集
选择、插入、更新、删除或创建视图语句。
由于insert
语句和select
语句是两种不同的语句,因此CTE仅对insert
有效
作为一种选择,您可以考虑使用A:
有另一种方法可以实现你想做的事情。尝试如下
Select * into #temp_table
from Table1
INSERT INTO Table2 (table1_id) select id from #temp_table
SELECT * from #temp_table
Select * into #temp_table
from Table1
INSERT INTO Table2 (table1_id) select id from #temp_table
SELECT * from #temp_table