sql - 如何从两个不同的源表在单个表中插入值
问题描述
我的数据库中有两个不同的表,它们具有唯一的列名。我想将值添加到我已经使用这两个表中需要的列名创建的新表中。
表 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'
请帮我解决它。
解决方案
您可以尝试像这样的左连接或内连接来从两个表中插入数据。
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
这将给出错误,您的查询将无法正常运行。
推荐阅读
- javascript - 为什么当我注册时,注册函数中忽略了密码值到 mongoDB?
- c++ - C++ 使用没有 INCLUDE 语句的 MACRO
- r - 如果它们的长度不同,如何将所有信息从 df.1(国家作为行,年份作为列)复制到 df.2(org-years 作为行,国家作为列)?
- javascript - 在 Lambda 函数中传递查询字符串参数 (Netlify)
- typescript - TypeScript:自定义类型的类型保护
- javascript - Firebase 函数 - 间隔内的间隔,以减少调用
- java - 如何在 LWJGL 中将 SSBO 数据读入 CPU
- python - 在 Python 中为 JSON 请求加密值
- bash - Bash 变量未更新
- asp.net-core - 当应用程序是网站的一部分时,ASP.NET CORE 不呈现 ViewComponents