Mysql 我想将下个月的员工薪资表更新为当前表

Mysql 我想将下个月的员工薪资表更新为当前表,mysql,sql,Mysql,Sql,嗨,我有一个叫做jan的当前薪资表,列是employeename、employeeid和Jansalary。我必须将2月的工资更新到1月的表格。我的代码是: update jan set jan.salary=feb.salary from jan inner join feb on feb.employeeid=jan.employeeid 我的问题是,如果feb有新的员工薪资数据,我应该使用right join吗?您的查询不正确,您无法在更新后进行更新,因为它将为您提供不正确的语法 正

嗨,我有一个叫做jan的当前薪资表,列是employeename、employeeid和Jansalary。我必须将2月的工资更新到1月的表格。我的代码是:

update jan 
set jan.salary=feb.salary

from jan
inner join feb
on feb.employeeid=jan.employeeid

我的问题是,如果feb有新的员工薪资数据,我应该使用right join吗?

您的查询不正确,您无法在更新后进行更新,因为它将为您提供不正确的语法

正确的查询如下所示:

update jan, feb
set jan.salary=feb.salary
where feb.employeeid=jan.employeeid;
如果您在2月份有新员工工资数据,您有两个选择:

选项1:您不想在1月1日获得新员工的薪资数据,因此在本例中无需执行任何操作,因为您的加入基于employeeid 选项2:您希望复制1月份的新员工薪资数据,以便此查询可以执行以下操作:

INSERT INTO `feb` (`employeeid`,`employeename`,`salary`)
SELECT DISTINCT(feb.employeeid), employeename, salary
FROM feb
WHERE feb.employeeid NOT IN (SELECT jan.employeeid FROM jan);
您的设计很糟糕最好只是创建一个名为
salary
的表,然后将月份作为归档的月份放在此表中:

薪资表

  • 雇员ID
  • 工资金额

  • 首先,这是一个糟糕的数据库设计。其次,你正在用二月的数据覆盖一月。第三,根据实际数据,内部连接可能根本不正确。我的目的是覆盖1月份的数据。谢谢Farouk。真的很感激