如何从子查询中选择INTO newTable?

时间:2015-11-27 08:09:19

标签: sql sql-server tsql

有两个表有数百列,a和b。我试图将它们作为一个新的第三个表加入,c。

SELECT * FROM a
FULL JOIN b
ON a.id=b.id

由于列太多,因此首先在CREATE TABLE AND INSERT INTO中是不实际的。有一些关于SELECT INTO的帖子,如下:

SELECT * 
INTO c 
FROM (
     SELECT * FROM a
     FULL JOIN b
     ON a.id=b.id
     )
     ;

错误讯息:

Incorrect syntax near ';'.

有许多类似的帖子,但没有人回答这里的问题。有人可以开导吗?

选择INTO:http://www.w3schools.com/sql/sql_select_into.asp

5 个答案:

答案 0 :(得分:3)

您需要命名子查询:

SELECT * 
INTO c 
FROM (
     SELECT * FROM a
     FULL JOIN b
     ON a.id=b.id
     ) sub

但是你真的不需要子查询来做到这一点,一个简单的陈述也会起作用:

SELECT * 
INTO c 
FROM a FULL JOIN b
  ON a.id = b.id

答案 1 :(得分:0)

您需要在两个表之间编写一次通信列名称 - 例如:

SELECT * 
FROM 
( 
SELECT a.* /*all a colums*/, /*b.columns that don't exist in the table a */
FROM a 
FULL JOIN b 
ON a.id = b.id 
)AS C

答案 2 :(得分:0)

列名必须是唯一的,并且确保每个都有ID
你可以选择纯粹的选择,因为它只是输出
但是一旦它进入甚至子查询就失败了

select * from 
(
SELECT * FROM a
FULL JOIN b
ON a.id=b.id
) tt

您只需列出列表中的唯一列或使用别名来制作唯一的

有些人所做的是使用列中的表名,这样它们就是唯一的。例如aID,bID

答案 3 :(得分:-1)

您的代码是正确的,您只是错过了别名..

SELECT * INTO c
FROM ( 
      SELECT * FROM a FULL JOIN b ON a.id = b.id 
    )
AS tmp

答案 4 :(得分:-3)

SELECT * 来自外部联接b作为a.id = b.id;