2016-09-16 13 views
0

私は個人的な使用のために医者用の小さなソフトウェアで作業しています。彼は患者の一意のIDが月、年、年の組み合わせであることを望んでいます。例えば2016年7月の5番目の患者のIDは2016-07-05でなければなりません。月が変わると、idは再び1にリセットされます。それはどのようにmysqlのDBで達成することができますか?私はPHPコードでそれを行うことができますが、私はデータベーステーブルでそれを行い、毎回実行するコードの行を保存したい。私は周りを検索したが、解決策を見つけることができなかった。 助けてください。Genrate月と日付に基づく一意のID MYSQL

答えて

0

あなたはのようなものを使用することができます。

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

しかし、それはどこかにカウンターを持っている必要があります。

0

この問題は、テーブル内のidよりもわずかな操作で解決できます。月または年が、その後変更されていない場合

  1. 最後の人が2016-09-id用などして所属何月知っている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; 
関連する問題