我的数据库中有两个具有唯一列名的不同表。我想将值添加到我的新表中,该表已经用这两个表中需要的列名创建了。
表1:ID | CreationTime | serialNum |标题|
表2:ID | CreationTime | Business | Case | ReportItem |
我希望新表具有以下值。
表3:ID | CreationTime | serialNum | Business | Case | ReportItem |
我正在尝试使用我知道不正确的查询。
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'
请帮助我解决它。
答案 0 :(得分:0)
您可以尝试使用Left或内部联接之类的方法从两个表中插入数据。
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
这将产生错误,并且您的查询将无法正常运行。
答案 1 :(得分:0)
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 null Id, null creationtime, null business, null reportingitem, [SerialNum]
from [Table1]
where creationtimeutc>='1-jan-2018' and creationtime<'2-jan-2018'
联合或联合中的所有列都需要相同的长度,否则查询失败 谢谢
答案 2 :(得分:0)
您可以尝试以下查询。
insert into Table3([ID],[creationtime],[Business],[ReportingItem],[Case],SerialNum])select [ID],[creationtime],[Business],[ReportItem],[Case],null as [SerialNum]from [Table2] where creationtime>='1-jan-2018' and creationtime<'2-jan-2018'
union Select null as Id, null as creationtime, null as business, null as reportingitem, null as case,[SerialNum]from [Table1] where creationtimeutc>='1-jan-2018' and creationtime<'2-jan-2018'
答案 3 :(得分:0)
您可以尝试以下查询。
CREATE TABLE #TableOUTPUT
(
ID int,
creationtime datetime,
serialNum VARCHAR(10),
Business varchar(10),
[Case] varchar(10),
ReportItem int
)
GO
CREATE TABLE TableFIRST
(
ID int,
creationtime datetime,
serialNum VARCHAR(10),
Caption varchar(10)
)
CREATE TABLE TableSECOND
(
id int,
creationtime datetime,
Business varchar(10),
[Case] varchar(10),
ReportItem varchar(10)
)
GO
insert into #TableOUTPUT
SELECT T1.ID,T1.creationtime,T1.serialNum,T2.Business,T2.[Case],T2.ReportItem FROM TableFIRST T1 INNER JOIN TableSECOND T2 ON T1.ID=T2.ID
SELECT * FROM #TableOUTPUT