根据日期(在表中)将 tableA 的列值设置为表的 id

Set column value of tableA to the id of tableB based on date (in tableB)

我有两个 table。第一个 table 被称为 employeeinfo,它看起来像这样:

______________________________________________________________________
| Id | FirstName | LastName | Hours | Rate | TotalCost | BatchDateId |
|____|___________|__________|_______|______|___________|_____________|
| 1  | John      | Smith    |  30   |  40  |   1200    |      ?      |
|____|___________|__________|_______|______|___________|_____________|
| 2  | Jane      | Doe      |  40   | 100  |   4000    |      ?      |
|____|___________|__________|_______|______|___________|_____________|

第二个 table 称为 batchdate,它看起来像这样:

___________________
| Id |    Date    |
|____|____________|
| 1  | 2015-06-25 |
|____|____________|

注意第一个 table 中的 "?" (employeeinfo table)..我的目标是能够将 BatchDateId 设置为Id 从第二个 table (batchdate table) 基于日期(例如 2015-06-25).

但要注意的是,假设我明天再次 运行 查询,我希望它用 [=15= 中的新 Id 更新 BatchDateId ] table(因为它将有一个新行,其中包含新的 Id 和新的 Date)。

提前致谢!

编辑:到目前为止我的陈述如下:

String employeeInfo = "INSERT INTO employeeinfo (FirstName, LastName, Hours, Rate, TotalCost, BatchDateId) "
                                + "(?, ?, ?, ?, ?, ?)"
                                + " ON DUPLICATE KEY UPDATE "
                                + "Hours=(?), Rate=(?), TotalCost=(?);";

并且:

String batchDate = "INSERT INTO batchdate (Date) VALUES " 
                + "(?)" 
                + " ON DUPLICATE KEY UPDATE " 
                + "Date=(?);";

EDIT2:所以我想做的是,假设我在另一天更新了 John Smith 的 Hours and/or Rate (这也会更改 TotalCost),那么 BatchDateId 应该更改为包含新 Date 的新 Id。如果 employeeinfo 中现有行的 none 受到影响 或者这些行在同一天更新 BatchDateId 保持不变;但是,如果有新行,那么它们应该有不同的 BatchDateId(基于 batchdate table 中的新行)。

如果我没记错的话,你可以在表之间做一个JOIN,这将得到匹配的Id,然后像下面那样执行UPDATE操作

update employeeinfo a
join batchdate b on a.Id = b.Id
set a.BatchDateId = b.Id;