没想到这么多年还是要继续写微信小程序会员卡开卡、扣卡这种逻辑,又是脑子炸裂的一天。
排序需求
会员卡使用状态字段,在数据库中的对应值如下
Status int // 卡状态。0 待使用; 1 已使用; 2 使用完; 3 已退卡; 4 退卡中
如果想按照如下顺序排序:
- 待使用
- 已使用
- 退卡中
- 使用完
- 已退卡
那么就不能直接使用 order by status asc 这种的方式。
指定值排序
解决方法是使用
SELECT * FROM user_card
ORDER BY FIELD(status, 0, 1, 4, 2, 3)
注意: 如果字段包含的值不在指定的值列表中,则该字段的值将被视为 NULL,并放在排序结果的最后。
golang gorm
对应的 gorm 使用方式为
db.Order("FIELD(column, 0, 1, 4, 2, 3)").Find(&result)
贴心的 AI
我在 poe Sage 中问的这个问题,没想到 Sage 不但回答了 Mysql 的用法,还直接给出了 golang Gorm 的用法。
看来我这个号算是练成了。。。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式