2016-09-16 75 views
0

我正在爲醫生開發一個小型軟件供他個人使用。他希望患者的唯一身份證明是該月份的患者年,月和人數的組合。例如對於2016年7月份的第五位患者,ID應該是2016-07-05,並且當月份更改ID時應該重新設置爲1。如何在mysql數據庫中實現?我可以把它放在php代碼中,但我想在數據庫表中執行它,並保存每次執行的代碼行。我搜索了四周,但我無法找到解決方案。 請幫忙。Genrate基於月份和日期的唯一ID MYSQL

回答

0

您可以使用類似:

CONCAT(YEAR(NOW()),'-',MONTH(NOW()), '-', IFNULL((SELECT MAX(P) FROM person WHERE <...>)+1,1)); 

但是,這需要你有一個櫃檯的地方。

0

這個問題可以通過一些操作上id表中得到解決。

  1. 比較ID的唯一前綴知道最後一個人屬於例如用於2016-09-id僅比較2016-09-與當前日期

  2. 如果一個月或一年未更改,我們發現最大的id何年何月只有通過比較人的ID和一個增加它與日期串聯

  3. 否則我們串接日期1

以下是表person(id, name)的示例查詢

insert into person(id, name) 
     select if(max(id) is null, concat(date_format(now(), '%Y-%m-'), '1'), 
        if(max(substr(id, 1, 8)) = date_format(now(), '%Y-%m-'), 
         concat(date_format(now(), '%Y-%m-'), 
         max(substr(id, 9)+1)), 
        concat(date_format(now(), '%Y-%m-'), 1))) as nextid, 'lastperson' 
     from person;