有两个表有数百列,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 ';'.
有许多类似的帖子,但没有人回答这里的问题。有人可以开导吗?
答案 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;