【发布时间】:2013-08-01 15:59:42
【问题描述】:
我有两张表 A 和 B,有 30 列(相同的变量名,不同年份的数据),没有主键,每列几乎有一百万条记录。
我想比较A.X1 和B.X1(nvarchar8,包含空格、-、字母和数字)并将外连接结果插入另一个表 C(具有相同的 30 列),所以我有所有行A 和其中 B!=B.X1 上的 A)。
例子:
表 A
X1 X2 X3 ..... X30
11 E R ..... G
12 R 4 L
13 S 5 NULL
14 D T NULL
表 B
X1 X2 X3 ..... X30
11 E R ..... G
12 R 4 L
15 R2 56 NULL
16 R1 T1 NULL
结果表 C
X1 X2 X3 ..... X30
11 E R ..... G
12 R 4 L
13 S 5 NULL
14 D T NULL
15 R2 56 NULL
16 R1 T1 NULL
我该怎么做。
我试过了
INSERT INTO C
SELECT *
from A
full outer join B
on A.X1 = B.X1
我得到的错误
消息 213,第 16 级,状态 1,第 1 行
插入错误:列名或提供的值的数量与表定义不匹配。
我创建了 C,目前是空的。
【问题讨论】:
-
看来你只需要 A 和 B 的 UNION。
-
您应该指定列名,而不是 SELECT *。
-
并且您还应该始终在
INSERT子句中指定列以避免任何意外和问题!
标签: sql outer-join