mysql - 如何在 MYSQL 中插入来自不同数据库的新表值及其匹配 id
问题描述
我有我的两个 MYSQL 数据库:
数据库 1 与表:Employee
与列:
Employee_code
和Employee _ID
和数据库 2 与表:Employee_log
与列:
Date
,Time
和Employee_ID
.
我现在已经创建了第三个数据库 3,其中包含 table:Employee_Details
列:
Employee_code
Employee_ID
Date
和Time
.
我还设法Employee_Details
使用以下 SQL 查询将日期插入到表中:
INSERT INTO database3.Employee_Details(Employee_ID, Employee_Code)
SELECT Employee_ID, Employee_Code FROM database 1.Employee;
但是,现在我想将数据库 2 表中的Date
and包含到具有匹配员工 ID 的数据库 3 中。我尝试使用上面的代码,但是日期被插入到表中,在其他列值为 NULL 的新行中。Time
Employee_log
Employee_ID
Example:
Employee_ID Employee_Code Date
1 1011
2 1012
Null Null 09/05/2018
Null Null 08/05/2018
那么,如何将日期插入其匹配项Employee_id
,有人可以帮我解决这个问题。谢谢,
解决方案
您可以先删除database3.Employee_Details
.
DELETE FROM database3.Employee_Details;
接下来,INSERT ... SELECT
像你一样做,但database1.Employee
这次database2.Employee_log
加入。
INSERT INTO database3.Employee_Details
(Employee_ID,
Employee_Code,
Date,
Time)
SELECT Employee.Employee_code,
Employee.Employee_ID,
Employee_log.Date,
Employee_log.Time
FROM database1.Employee
LEFT JOIN database2.Employee_log
ON Employee_log.Employee_ID = Employee.Employee_ID;
通常,连接结合了两个表的行。ON
如果子句中的条件对于该对行为真,则右表的每一行都附加到左表的行。
有一些不同口味的连接。这里我们使用一个LEFT JOIN
. 在 aLEFT JOIN
中,左表(JOIN
关键字左侧的表)的行包含在结果中,即使右表中没有匹配的行也是如此。结果中的各个列都为空,而不是右表中的列值,因为没有来自匹配行的值。
相反, aINNER JOIN
仅包含左表中存在右表匹配行的那些行。
要包括所有员工,即使他们没有可用的日志数据,我们也必须在LEFT JOIN
此处选择一个。
如果您不想重新开始,可以database3.Employee_Details
使用缺失值进行更新。
UPDATE database3.Employee_Details
LEFT JOIN database1.Employee_log
ON Employee_log.Employee_ID = Employee_Details.Employee_ID
SET Employee_Details.Date = Employee_log.Date,
Employee_Details.Time = Employee_log.Time;
我们再次使用 a并使用连接结果中的相应值LEFT JOIN
设置子句中的字段。SET
然后用 empty 删除不必要的行Employee_ID
。
DELETE FROM database3.Employee_Details
WHERE Employee_Details.Employee_ID IS NULL;
推荐阅读
- sql-server - 为什么我收到“java.sql.SQLNonTransientConnectionException:尝试联系服务器时出现问题”
- c# - Microsoft Bot Framework:更新 Microsoft.Bot.Connector 时出现 MissingMethodException
- numpy - arctan2 的梯度方向导致翻转角度
- google-cloud-platform - GCP 命令获取 core-dags_are_paused_at_creation 变量的 CloudComposer 气流配置值
- apache-spark - 当 Spark 更新底层 S3 分区时,如何从 Athena 获取数据?
- r - R中group_by的滚动差异
- android - 如何使用 Android Worker 观察最后发出的 WorkManager getWorkInfoByIdLiveData
- c++ - Ortools - 将 MPVariable 设置为 MPConstrains 绑定
- r - 在R中转换负时间
- ansible - 如何从 ansible 塔库存主机中删除变量?