首页 > 解决方案 > 如何从两个不同的源表在单个表中插入值

问题描述

我的数据库中有两个不同的表,它们具有唯一的列名。我想将值添加到我已经使用这两个表中需要的列名创建的新表中。

表 1:ID|CreationTime|serialNum|Caption|

表2:ID|创建时间|业务|案例|报表项|

我想让我的新表具有以下值。

表3:ID|创建时间|序列号|业务|案例|报表项|

我正在尝试使用这个我知道不正确的查询。

insert into Table3([ID],[creationtime],[Business],[ReportingItem],[Case],[SerialNum])    
select [ID],[creationtime],[Business],[ReportItem],[Case]
from [Table2]     
where creationtime>='1-jan-2018' and creationtime<'2-jan-2018'

union

Select[SerialNum]    
from [Table1]     
where creationtimeutc>='1-jan-2018' and creationtime<'2-jan-2018'

请帮我解决它。

标签: sqlsql-server

解决方案


您可以尝试像这样的左连接或内连接来从两个表中插入数据。

INSERT INTO user (id, name, username, opted_in)
  SELECT id, name, username, opted_in 
  FROM user LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id

在这里,您应该在所有联合查询集中编写相同的结果,即列和数据类型。这里已经在下面进行了描述。

正确的路

INSERT INTO #Temp1
SELECT val1, val2 
FROM TABLE1
 UNION
SELECT val1, val2
FROM TABLE2

错误道

INSERT INTO #Temp1
SELECT val1, val2 
FROM TABLE1
 UNION
SELECT val2
FROM TABLE2

这将给出错误,您的查询将无法正常运行。


推荐阅读