如何在MYSQL中插入来自不同数据库的新表值及其匹配id
我有两个MYSQL数据库: 数据库1,表:如何在MYSQL中插入来自不同数据库的新表值及其匹配id,mysql,sql,sql-insert,Mysql,Sql,Sql Insert,我有两个MYSQL数据库: 数据库1,表:Employee,列: 员工代码和 Employee\u ID 数据库2的表:Employee\u log,列为: 日期 时间和 员工ID 现在,我创建了第三个数据库3,表为:Employee\u Details,列为: 员工代码 Employee\u ID 日期和 时间 我还使用以下SQL查询将日期插入到Employee\u Details表中: INSERT INTO database3.Employee_Details(Employe
Employee
,列:
和员工代码
Employee\u ID
Employee\u log
,列为:
日期
和时间
员工ID
Employee\u Details
,列为:
员工代码
Employee\u ID
和日期
时间
Employee\u Details
表中:
INSERT INTO database3.Employee_Details(Employee_ID, Employee_Code)
SELECT Employee_ID, Employee_Code FROM database 1.Employee;
但是,现在我想将数据库2表中的日期
和时间
与匹配的员工ID一起包含到数据库3中:Employee_log
。我尝试使用上述代码,但日期被插入到表中Employee_ID
之后的新行中,其他列值为NULL
Example:
Employee_ID Employee_Code Date
1 1011
2 1012
Null Null 09/05/2018
Null Null 08/05/2018
那么,我如何将日期插入到匹配的员工id
,有人能帮我吗。
谢谢,您可以先删除
数据库3.Employee\u Details
中的所有行,然后重新开始
DELETE FROM database3.Employee_Details;
接下来,执行插入。。。像以前一样选择
,但这次加入数据库1.员工
和数据库2.员工日志
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
中,即使右表中没有匹配的行,左表的行(JOIN关键字的左表)也会包含在结果中。结果中的各个列都是空的,而不是右表中的列值,因为匹配行中没有值
相比之下,内部联接
只包含左表中存在右表匹配行的行
要包括所有员工,即使没有可用的日志数据,我们也必须在此处选择一个LEFT JOIN
如果您不想重新开始,可以使用缺少的值更新数据库3.Employee\u 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;
我们再次使用左连接
,并使用连接结果中的相应值设置set
子句中的字段
然后删除员工ID为空的不必要行
DELETE FROM database3.Employee_Details
WHERE Employee_Details.Employee_ID IS NULL;
您可以按以下方式进行插入:
INSERT INTO database3.Employee_Details(Employee_ID, Employee_Code)
SELECT e.Employee_ID, e.Employee_Code, el.date
FROM database 1.Employee e LEFT JOIN
Employee_log el
ON e.Employee_ID = el.Employee_ID;
您可能会发现创建表更简单,如下所示:
CREATE TABLE database3.Employee_Details as
SELECT e.Employee_ID, e.Employee_Code, el.date
FROM database 1.Employee e LEFT JOIN
Employee_log el
ON e.Employee_ID = el.Employee_ID;
你为什么不在一个数据库上完成这些工作?