选择使用UNION QUERY

时间:2010-10-25 20:46:07

标签: sql sql-server tsql union derived-table

我想在SQL Server中使用以下查询创建一个新表。我无法理解为什么这个查询不起作用。

Query1:Works

SELECT * FROM TABLE1
UNION
SELECT * FROM TABLE2 

Query2:不起作用。 错误:Msg 170, Level 15, State 1, Line 7 Line 7: Incorrect syntax near ')'.

SELECT * INTO [NEW_TABLE]
FROM
(
SELECT * FROM TABLE1
UNION
SELECT * FROM TABLE2
)

谢谢!

5 个答案:

答案 0 :(得分:72)

您必须在SQL Server中为派生表定义表别名:

SELECT x.* 
  INTO [NEW_TABLE]
  FROM (SELECT * FROM TABLE1
        UNION
        SELECT * FROM TABLE2) x

“x”是此示例中的表别名。

答案 1 :(得分:2)

INSERT INTO #Temp1
SELECT val1, val2 
FROM TABLE1
 UNION
SELECT val1, val2
FROM TABLE2

答案 2 :(得分:2)

这是SQL Server 2017的一种有效语法:

USE [<yourdb-name>]
GO

SELECT * INTO NEWTABLE 
FROM <table1-name>
UNION ALL
SELECT * FROM <table2-name>

答案 3 :(得分:1)

您也可以尝试:

create table new_table as
select * from table1
union
select * from table2

答案 4 :(得分:1)

select *
into new_table
from table_A
UNION
Select * 
From table_B

仅当Table_A和Table_B具有相同的模式

时才有效