有一个复杂的SELECT查询,我想从中将所有行插入表变量,但是T-SQL不允许它 .
沿着相同的路线,您不能将表变量与SELECT INTO或INSERT EXEC查询一起使用 . http://odetocode.com/Articles/365.aspx
简短的例子:
declare @userData TABLE(
name varchar(30) NOT NULL,
oldlocation varchar(30) NOT NULL
)
SELECT name, location
INTO @userData
FROM myTable
INNER JOIN otherTable ON ...
WHERE age > 30
表变量中的数据稍后将用于将其插入/更新回不同的表(大多数是具有次要更新的相同数据的副本) . 这样做的目的是简单地使脚本更容易阅读,并且比直接在右表中执行_1317881更容易定制 . 性能不是问题,因为 rowcount
相当小,只在需要时手动运行 .
......或者告诉我,如果我做错了 .
8 回答
尝试这样的事情:
SELECT INTO
的目的是(根据文件,我的重点)但是你已经有了目标表!所以你想要的是
在这种语法中,允许
MyTable
成为表变量 .您还可以使用公用表表达式来存储临时数据集 . 它们更优雅,更友好:
您可以尝试使用临时表...
您跳过了以这种方式声明表格的努力...帮助进行特殊查询...这会创建一个本地临时表,除非您在应用程序中使用相同的连接,否则其他连接不会显示 .
如果你需要变量,可以这样声明:
尝试使用
INSERT
而不是SELECT INTO
:首先创建一个临时表:
Step 1:
**步骤2:**在Temp表中插入一些值 .
Step 3: 声明表变量以保存临时表数据 .
Step 4: 从临时表中选择值并插入表变量 .
最后,将值从临时表插入到Table变量中
Step 5: 可以检查表变量中的插入值 .
好的,现在有了足够的努力,我可以使用以下内容插入@table:
这里主要是选择要插入的列 .
使用SELECT INTO的一个原因是它允许您使用IDENTITY:
这不适用于表变量,这太糟糕了......