tablea表里值唯一的字段有主键,现需要根据创建时间生成唯一编码。tablea表如下:
id | code | create_date | bm |
db0984eh70404a0eb118a7cad032da0f | 6227 | 2020-09-01 11:26:58 | |
db93c625eredc979b79e4be00cb87e5d | 6227 | 2020-09-01 11:30:10 | |
dbd2dfadce4544a3890db020fab99c37 | 6227 | 2020-09-01 11:30:10 | |
199a364e08dd43bbac1742a5de44ad77 | 6234 | 2020-08-25 15:33:02 | |
1abc365fcde849ec8b7dc5801e8cda49 | 6234 | 2020-08-25 14:58:56 | |
2e59da44958744f4a40a26b230f13fec | 6234 | 2020-08-25 14:58:56 | |
2ed6da9837cc4b2891cb87bb00e72487 | 6234 | 2020-08-25 14:58:56 |
(前端程序有Excel导入功能,导致创建时间相同)
首先对相同create_date的数据进行排序:
处理sql如下:
得到结果:
以上完成组内排序。
但实际应用中一般不会在原表中单独增加一个字段用于存放这个排序,如果团队中有大自然的搬运工,基本上增加一个字段后应用后台程序就挂了,除非有没被占用的预留字段。而MySQL5.6之后的版本会对子查询的order by语句中进行优化,即忽略这个排序,这时候就要用limit函数,即在order by后面增加limit限制,这样就不会优化。
执行结果如下:
再把以上查询语句改成update 语句就可以了。