Sql 如何基于其他两个表中的值在没有重叠的情况下将行插入到表中?

Sql 如何基于其他两个表中的值在没有重叠的情况下将行插入到表中?,sql,sql-server,Sql,Sql Server,在努力解决这个问题并研究了半天的工作之后,我终于放弃了,并寻求帮助。我有三张桌子。我需要在表1中为表3的每个值插入表2中的所有信息 也许我只是没有意识到我需要做些什么来实现这一点——但是表2和表3没有重叠的列,所以我如何链接它们以将它们插入表1中呢 我尝试过几种不同的变体,最新的是: insert into Table1 (column1, column2, column4, column3) select column1, column2, column3 from Table

在努力解决这个问题并研究了半天的工作之后,我终于放弃了,并寻求帮助。我有三张桌子。我需要在表1中为表3的每个值插入表2中的所有信息

也许我只是没有意识到我需要做些什么来实现这一点——但是表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

当列不存在时,将
null

select column1, column2, column3
from Table2
union all
select column3, null, null
from Table3
我需要在表1中为表3的每个值插入表2中的所有信息

我想您需要一个
交叉连接

insert into Table1 (column1, column2, column4, column3)
    select t2.column1, t2.column2, t2.column3, t1.column3
    from Table2 t2 cross join
         Table3 t3;

你能添加一些样本数据和预期结果吗?我知道你想这样做:在A中插入B中与C中的值相对应的所有内容。你的意思是B中的一列中的值需要存在于C中的一列中吗?