0
我一直在试图想出一个优雅的方式来做到以下几点,让我们说,我有以下表格:MySQL的更新当前记录表
+-----+---------+------------+--------------+------------+------------+--------+
| ID | EmpNum | Name | Title | StartDate | UpdateDate | IsCurr |
+-----+---------+------------+--------------+------------+------------+--------+
| 1 | 0000001 | John Smith | Engineer | 01/01/2017 | 01/02/2017 | N |
| 2 | 0000001 | John Smith | Sr. Engineer | 01/01/2017 | NULL | Y |
+-----+---------+------------+--------------+------------+------------+--------+
当员工改变标题,我要更新当前员工记录的UpdateDate
,并将IsCurr
更改为N
,然后插入将成为当前记录的新记录。例如,如果员工John Smith
在01/03/2017被提升为团队领导,那么结果表就会这样。
+ ----- + --------- + ------------ + -------------- + - ----------- + ------------ + ----
----+
| ID | EmpNum | Name | Title | StartDate | UpdateDate | IsCurr |
+-----+---------+------------+--------------+------------+------------+--------+
| 1 | 0000001 | John Smith | Engineer | 01/01/2017 | 01/02/2017 | N |
| 2 | 0000001 | John Smith | Sr. Engineer | 01/01/2017 | 01/03/2017 | N |
| 3 | 0000001 | John Smith | Team Lead | 01/01/2017 | NULL | Y |
+-----+---------+------------+--------------+------------+------------+--------+
从我可以告诉MySQL没有MERGE
函数,所以我将需要在2个单独的命令。如UPDATE
中最新的记录,然后插入新行。 在MySQL中有更好的方法吗?
在此先感谢。
我确实考虑过'对重复KEY'但我插入一个完全新的记录到该表中,所以我需要通过一些其他的领域,以验证的同一员工的先前记录的存在。 – Alistair
不确定是否过度使用,但如果使用子查询来选择最近的记录并在INSERT INTO的VALUES中使用它可能会起作用。 – Dez