mysql 自定义排序顺序

实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序

SELECT tsdvoucher0_.VOUCHER_ID AS VOUCHER1_0_, tsdvoucher0_.COMMENT_DEVICE_TYPE AS COMMENT2_0_, tsdvoucher0_.COMMENT_ID AS COMMENT3_0_, tsdvoucher0_.COMMENT_PERSON_NO AS COMMENT4_0_, tsdvoucher0_.COMMENT_PIC AS COMMENT5_0_
    , tsdvoucher0_.COMMENT_SPENDING AS COMMENT6_0_, tsdvoucher0_.CREATE_TIME AS CREATE7_0_, tsdvoucher0_.RESTAURANT_CONTEXT AS RESTAURANT8_0_, tsdvoucher0_.RESTAURANT_ID AS RESTAURANT9_0_, tsdvoucher0_.RESTAURANT_NAME AS RESTAURANT10_0_
    , tsdvoucher0_.USER_ID AS USER11_0_, tsdvoucher0_.VERSION AS VERSION0_, tsdvoucher0_.VOUCHER_ACT_ID AS VOUCHER13_0_, tsdvoucher0_.VOUCHER_ACT_RATIOS AS VOUCHER14_0_, tsdvoucher0_.VOUCHER_BUSINESS_STATUS AS VOUCHER15_0_
    , tsdvoucher0_.VOUCHER_CHECK_STATUS AS VOUCHER16_0_, tsdvoucher0_.VOUCHER_CHECKED_TIME AS VOUCHER17_0_, tsdvoucher0_.VOUCHER_DENOMINATION AS VOUCHER18_0_, tsdvoucher0_.VOUCHER_PIC AS VOUCHER19_0_, tsdvoucher0_.VOUCHER_USED_TIME AS VOUCHER20_0_
    , tsdvoucher0_.VOUCHER_VALID_DAY AS VOUCHER21_0_
FROM T_SD_VOUCHER tsdvoucher0_
WHERE tsdvoucher0_.USER_ID = ?
ORDER BY FIELD(tsdvoucher0_.VOUCHER_BUSINESS_STATUS, 3, 4, 6, 5), FIELD(tsdvoucher0_.VOUCHER_CHECK_STATUS, 3, 2, 4), tsdvoucher0_.CREATE_TIME ASC

说明:status为排序字段,后面为该字段的相关值

mysql 自定义排序顺序

时间: 2024-08-26 23:01:00

mysql 自定义排序顺序的相关文章

MySQL自定义排序

存在表A 按名字倒序排 SELECT  *  FROM  A  ORDER  BY  name  DESC 结果如下: 若需要按照王五.张三.李四的顺序排序,使用自定义排序:FIELD() SELECT  *  FROM A  ORDER  BY  FIELD('王五', '张三', '李四')   ASC MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序 ORDER  BY  FIELD(str,str1,str2,str3,str4……)  DESC str,s

MySQL自定义排序函数FIELD()

MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1.str2.str3.str4比较,返回1.2.3.4,如遇到null或者不在列表中的数据则返回0. mysql> select * from driver_log order by field(name,'Suzi','Ben','Henry'); +--------+-------+------------+-------+ | rec_id | nam

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

如何用ORM自定义排序

ORM连接的数据库不同,方法也不同 postgresql: a.extra(select={"new_order":"position(status in '2,3,4,1')"}).order_by("new_order") a是queryset对象,new_order 是新的自定义的字段名,status是排序的字段,“2,3,4,1”是你自定义的顺序,也可以是字符串类型 mysql: a.extra(select={"new_ord

Mysql 语句执行顺序

转载自:http://blog.csdn.net/jintao_ma/article/details/51253356 1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西?  在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是DBA,我们只需要学习其中的sql就可以了. 2.既然会写sql是目标,那么怎么才能写好sql.学习下面几点: 1)Mysql的执行顺序,这个是写sql的核心,之前遇到的一些错误就是因为对其不了解

【MySQL】排序原理与案例分析

前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序.本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍与排序相关的参数,最后会给出几个"奇怪"排序例子,来谈谈排序一致性问题,并说明产生现象的本质原因. 排序优化与索引使用 为了优化SQL语句的排序性能,最好的情况是避免排序,合理利用索

Mysql 自定义HASH索引带来的巨大性能提升

有这样一个业务场景,需要在2个表里比较存在于A表,不存在于B表的数据.表结构如下: T_SETTINGS_BACKUP | CREATE TABLE `T_SETTINGS_BACKUP` ( `FID` bigint(20) NOT NULL AUTO_INCREMENT, `FUSERID` bigint(20) NOT NULL COMMENT '用户ID', `FDEVICE` varchar(64) NOT NULL DEFAULT '' COMMENT '用户设备号(SN)', `F

Lucene 中自定义排序的实现

使用Lucene来搜索内容,搜索结果的显示顺序当然是比较重要的.Lucene中Build-in的几个排序定义在大多数情况下是不适合我们使用的.要适合自己的应用程序的场景,就只能自定义排序功能,本节我们就来看看在Lucene中如何实现自定义排序功能. Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和 ScoreDocCom

sql 自定义排序

方法一: 比如需要对SQL表中的字段NAME进行如下的排序: 张三(Z) 李四(L) 王五(W) 赵六(Z) 按照sql中的默认排序规则,根据字母顺序(a~z)排,结果为:李四  王五 赵六 张三   自定义排序:order by charindex(NAME,‘张三李四王五赵六’)  CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置.CHARINDEX函数调用方法如下:        CHARINDEX ( expression1 , expression2 [ , star