MySQL自定义查询字段排序

同事在做抽奖排名的时候有个问题 需要按照

一等奖

二等奖

三等奖

未中奖

的形式输出数据

问到我如何排序。

数据库设计如下 用一个prize_code字段标示了是否中奖 1是一等奖 2是二等奖 3是三等奖 0是未中奖

思考许久 本来开始想用union 写出SQL如下

select * from 
    (SELECT * FROM data where prize_code>0 order by prize_code asc) 
as tmp
UNION
select * from data where prize_code=0;

查询结果如下:

然后同事觉得太复杂 不好理解 ,后来我说提供用分两次查询的方式交给php处理排序 ,然后他说 那样不利于分页 而且逻辑复杂了,于是我想到不如自定义排序

最终解决如下:

SELECT * FROM data order by field(prize_code,1,2,3,0);

查询结果如下:

posted @   李照耀  阅读(3178)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示