根据日期(在表中)将 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;
我有两个 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;