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