根据医院ID设置自动增量

时间:2017-07-01 13:57:59

标签: php mysql laravel

我的公司有多个客户。每个客户端都需要拥有自己的自动增量列。 例如,有多家医院需要记录患者的病情。记录到我的服务器。每个患者都需要一个参考编号。参考编号正在递增。

这就是我希望我的桌子看起来像

+-----------+-----------+-----------+----------+
|  user_id  | names     | ref_no    | hospital |
+-----------+-----------+-----------+----------+
|    1      |cholo wao  |    1      |  TMJ     |
|    2      |royson ml..|    2      |  TMJ     |
|    3      |pascal va..|    3      |  TMJ     |
|    4      |mustafa s..|    1      |  MBE     |
|    5      |nassoro h..|    4      |  TMJ     |
|    6      |zunaida s..|    2      |  MBE     |
|    7      |hadija ma..|    3      |  MBE     |
|    8      |kulsum za..|    4      |  MBE     |
|    9      |zawadi ya..|    1      |  MSA     |
|    10     |khamis mo..|    5      |  TMJ     |
|    11     |saada hem..|    5      |  MBE     |
|    12     |mark zuck..|    6      |  TMJ     |
+-----------+-----------+-----------+----------+

正如您在上面所看到的那样,ref_no仅基于先前Hosptial的最后一个插入ID递增。我被告知使用MAX(hospital)会导致危险,因为一次可能插入多行。

摘要QN

  

我可以使用哪个查询根据特定医院的最后一个ID插入参考编号?

1 个答案:

答案 0 :(得分:1)

我已经在SO中看到了两个关于此的解决方案,试一试

第一个

CREATE temporary table seq ( id int, seq int);
 INSERT INTO seq ( id, seq )
  SELECT user_id, 
   (SELECT count(*) + 1 FROM client c 
   WHERE hospital='TMJ') as seq 
  FROM client;

UPDATE client INNER join seq ON client.user_id = seq.id SET 
 client.ref_no = seq.seq;

第二个

 INSERT INTO 
 client( names, ref_no, hospital )
'cholo wao',SELECT MAX(ref_no) + 1 WHERE hospital='TMJ','TMJ' FROM    
 client;