在2个表上执行UNION时,SQL Server错误

时间:2018-11-07 10:05:49

标签: sql sql-server tsql union

我想在SQL Server中的另一个表下面添加一个表。

这是我的代码:

CREATE TABLE #main_table 
( Scenarios float ,Attribute VARCHAR(50) ,Value float ); 

insert INTO  #main_table  
select * 
FROM 
( SELECT *
FROM #table1
UNION ALL 
SELECT *
FROM #table2) a

但是我得到一个错误:

  

所有使用UNION,INTERSECT或EXCEPT运算符组合的查询在其目标列表中必须具有相同数量的表达式

任何人都知道可能是什么问题吗?

3 个答案:

答案 0 :(得分:3)

您可以在下面尝试-因为联合要求两个数据集中的列数均相等

insert INTO  #main_table  
select * 
FROM 
( SELECT Scenarios,Attribute ,Value
FROM #table1
UNION ALL 
SELECT Scenarios,Attribute ,Value
FROM #table2) a

答案 1 :(得分:2)

返回的列

SELECT * FROM#table1

以及

返回的列

SELECT * FROM#table2

必须具有相同的数字并且具有相同的类型。

答案 2 :(得分:2)

使用显式列进行联合

 insert INTO  #main_table (Scenarios,Attribute,Value) 
    select * 
    FROM 
    ( SELECT col1,col2,col3
    FROM #table1
    UNION ALL 
    SELECT col1,col2,col3
    FROM #table2) a

联盟遵循以下条件

  • UNION中的每个SELECT语句必须具有相同数量的 列
  • 这些列还必须具有相似的数据类型
  • 每个SELECT语句中的列也必须顺序相同