使用union插入表变量

时间:2014-03-11 15:14:30

标签: sql sql-server-2008 union

我有一个表变量,我想插入一个联合查询。联合查询运行正常,但我似乎无法使插入工作(语法错误)

INSERT INTO @table

(a,
b,
c,
d)

VALUES

(SELECT
       a,
       b,
       c,
       d 
FROM table1

UNION

SELECT
       a,
       b,
       c,
       d 
FROM table2)

这应该有用吗?如果其他地方有问题,我可以发布我的真实代码!

我在第一个SELECT

上遇到语法错误

2 个答案:

答案 0 :(得分:8)

INSERT INTO @table(a,b,c,d)
SELECT  a,b,c,d 
FROM   table1

UNION

SELECT a,b,c,d 
FROM table2

使用SELECT语句插入数据时,不需要使用Values子句。因此我从它中删除了VALUES位,只是简单地从两个SELECT查询中返回一行UNION。

Sql server支持INSERT语句的语法,如

INSERT INTO Table_Name(Col1, COl2. Col3...)
SELECT Col1, COl2. Col3...
FROM Other_Table_Name

这会将select语句返回的结果集插入到目标表中。在您的情况下,Result是两个选择的UNION,因此它与单个选择没有任何不同。

答案 1 :(得分:0)

在这种情况下不需要“VALUES”

INSERT INTO @table (a, b, c, d)
SELECT a, b, c, d FROM table1 
UNION 
SELECT a, b, c, d FROM table2