首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据月份和日期生成唯一id MYSQL

问根据月份和日期生成唯一id MYSQL
EN

Stack Overflow用户
提问于 2016-09-16 19:51:28
回答 2查看 1.1K关注 0票数 0

我正在为一位医生开发一个供他个人使用的小软件。他希望患者的唯一id是年份、月份和该月的患者数量的组合。例如,对于2016年7月的第五个患者,id应为2016-07-05,当月份发生变化时,id应再次重置为1。如何在mysql数据库中实现?我可以把它放在php代码中,但我想把它放在数据库表中,并保存每次执行的代码行。我到处找,但还是找不到解决办法。

EN

回答 2

Stack Overflow用户

发布于 2016-09-16 19:59:30

您可以使用类似以下内容:

代码语言:javascript
复制
CONCAT(YEAR(NOW()),'-',MONTH(NOW()), '-', IFNULL((SELECT MAX(P) FROM person WHERE <...>)+1,1));

但这需要你在某个地方有一个柜台。

票数 0
EN

Stack Overflow用户

发布于 2016-09-16 21:04:32

这个问题只需对表中的id进行少量操作即可解决。

  1. 仅比较id的前缀以了解最后一个人所属的月份例如对于2016-09-id,仅将2016-09-与当前日期比较
  2. 如果月份或年份不变,则我们只通过比较人员的id来找到最大id,并将其递增1并与日期
  3. 连接,否则我们将日期与1

连接<>G210

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

代码语言:javascript
复制
    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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39530807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档