我的公司有多个客户。每个客户端都需要拥有自己的自动增量列。 例如,有多家医院需要记录患者的病情。记录到我的服务器。每个患者都需要一个参考编号。参考编号正在递增。
这就是我希望我的桌子看起来像
+-----------+-----------+-----------+----------+
| 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)
会导致危险,因为一次可能插入多行。
我可以使用哪个查询根据特定医院的最后一个ID插入参考编号?
答案 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;