在为此苦苦挣扎并研究了半天的工作后,我终于放弃并寻求帮助。我有三张桌子。我需要将表2中的所有信息插入表1中,以获取表3的EACH值。
也许我只是没有将我的脑袋缠在完成该操作所需的工作上-但是表2和表3没有重叠的列,那么如何链接它们以将它们插入表1中?
我尝试了几种不同的版本,我的最新版本是这个版本:
insert into Table1 (column1, column2, column4, column3)
select column1, column2, column3
from Table2
union
select column3
from Table3
我收到此错误:
第205条消息的状态16,状态1,第2行
使用UNION,INTERSECT或EXCEPT运算符组合的所有查询的目标列表中必须具有相同数量的表达式。
我还需要填写一列,但由于它是一个总括值,因此可以在事后使用update语句来完成。
更新
有人问我要寻找什么样的结果...
第一个数字是表的来源,第二个是列,第三个是值。
表1
2.1.1 | 2.2.1 | 3.3.1 | 2.4.1
2.1.2 | 2.2.2 | 3.3.1 | 2.4.2
2.1.3 | 2.2.3 | 3.3.1 | 2.4.3
2.1.1 | 2.2.1 | 3.3.2 | 2.4.1
2.1.2 | 2.2.2 | 3.3.2 | 2.4.2
2.1.3 | 2.2.3 | 3.3.2 | 2.4.3
答案 0 :(得分:3)
在列不存在时,使null
:
select column1, column2, column3
from Table2
union all
select column3, null, null
from Table3
答案 1 :(得分:2)
我需要在表1中插入表2中的所有信息,以获取表3的EACH值。
我认为您想要cross join
:
insert into Table1 (column1, column2, column4, column3)
select t2.column1, t2.column2, t2.column3, t1.column3
from Table2 t2 cross join
Table3 t3;