MySQL 查询返回行号

533 阅读1分钟

问题背景

原来有一组被标记为推荐的商品,并且依赖标记为推荐时的推荐时间字段排序,现在需要显式管理推荐商品的顺序,添加sortIndex字段,因此需要将原有的推荐商品顺序清洗到sortIndex中,此问题的核心在于如何将时间排序映射为整数排序;

解决方案

  • 代码

留个后门上线后跑一下,注意这个需要上线后才能跑,数据延迟是否会造成其他影响;

  • SQL

将商品按推荐时间顺序查询并返回行号,行号即可做为sortIndex的源数据;

SQL

查询返回行号

select (@rowno:=@rowno+1) as `sortIndex`, product.id, product.recommendTime
from `hm_shoptradeproduct` product, (Select (@rowno :=0)) temp
where recommend = 1
and onSale = 1
and storeId = 1
order by recommendTime desc

查询结果