在T-SQL中用SELECT INTO创建一个表变量。

26 浏览
0 Comments

在T-SQL中用SELECT INTO创建一个表变量。

我有一个复杂的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

表变量中的数据稍后将用于将其插入/更新到不同的表中(大多数情况下是相同数据的副本,具有轻微的更新)。这样做的目标是使脚本相对于直接将SELECT INTO的正确表变得更易读和更易自定义。

性能不是问题,因为rowcount相当小,只有在需要时才手动运行。

…或者告诉我如果我整个都错了。

admin 更改状态以发布 2023年5月24日
0
0 Comments

SELECT INTO 的目的是(根据文档,我的强调)

从另一个表中的值创建一个新表

但你已经有了目标表!所以你想要的是

INSERT 语句将一个或多个新行添加到表中

你可以以以下方式指定数据值:

...

通过使用 SELECT 子查询指定一个或多个行的数据值,例如:

  INSERT INTO MyTable 
 (PriKey, Description)
        SELECT ForeignKey, Description
        FROM SomeView

在这个语法中,允许 MyTable 是一个表变量。

0
0 Comments

尝试这样做:

DECLARE @userData TABLE(
    name varchar(30) NOT NULL,
    oldlocation varchar(30) NOT NULL
);
INSERT INTO @userData (name, oldlocation)
SELECT name, location FROM myTable
INNER JOIN otherTable ON ...
WHERE age > 30;

0