MySQL GROUP BY后组内排序以及子查询强制排序

tablea表里值唯一的字段有主键,现需要根据创建时间生成唯一编码。tablea表如下:

idcodecreate_datebm
db0984eh70404a0eb118a7cad032da0f62272020-09-01 11:26:58
db93c625eredc979b79e4be00cb87e5d62272020-09-01 11:30:10
dbd2dfadce4544a3890db020fab99c3762272020-09-01 11:30:10
199a364e08dd43bbac1742a5de44ad7762342020-08-25 15:33:02
1abc365fcde849ec8b7dc5801e8cda4962342020-08-25 14:58:56
2e59da44958744f4a40a26b230f13fec62342020-08-25 14:58:56
2ed6da9837cc4b2891cb87bb00e7248762342020-08-25 14:58:56

 (前端程序有Excel导入功能,导致创建时间相同)

首先对相同create_date的数据进行排序:

处理sql如下:

得到结果:

以上完成组内排序。

但实际应用中一般不会在原表中单独增加一个字段用于存放这个排序,如果团队中有大自然的搬运工,基本上增加一个字段后应用后台程序就挂了,除非有没被占用的预留字段。而MySQL5.6之后的版本会对子查询的order by语句中进行优化,即忽略这个排序,这时候就要用limit函数,即在order by后面增加limit限制,这样就不会优化。

执行结果如下:

 再把以上查询语句改成update 语句就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值