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);

查询结果如下:

时间: 2024-08-08 09:38:24

MySQL自定义查询字段排序的相关文章

使mysql按中文字段排序

http://ourmysql.com/archives/391 测试后我发现,gbk不仅对字符内容是按拼音排序的,对数字也是一样,使用时需注意! 另外一篇文章: MySQL按中文拼音排序

MySQL对查询结果排序

1.排序查询 SELECT column1,column2,......... FROM table order by column asc | desc (1)对英语成绩排序后输出 select name,english from grade order by english desc; (2)对总分成绩排序后输出 select name 姓名 ,chinese+math+english 总分 from grade order by 总分 desc; (3)对赖姓的学生成绩排序输出 selec

MySQL 按指定字段自定义列表排序

[转]http://www.php42.com/index.php/database/35-sql/237-mysql-order-by-list 问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例, 下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` ASC 降序排列的 SQL 为: SELECT * FROM `MyTable` WHERE `id` IN (1, 7,

mysql 排序查询字段

排序查询语法: select 查询字段1from 表where [筛选条件]order by 要排序字段2 asc升序.desc 降序,要排字段3 asc升序.desc降序如果不写默认为升序 案例:查询员工信息,要求工资从高到低排序 SELECT * FROM employees ORDER BY salary DESC; #案例2:查询部门编号>=90,按入职日期升序的员工信息 SELECT * FROM employees WHERE department_id >=90 ORDER BY

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根据汉字拼音排序查询

例如现在有一张数据表label,字段为id.name,此表的字符集设置为gb2312,以gb2312_chinese_ci整理. 设置InnoDB引擎的字符集也为简体中文,且整理为gb2312_chinese_ci. 查询语句如下: select * from label order_by name collate gb2312_chinese_ci; 效果如下: tip:有时候结果不是很准确,不知道是不是因为字符集选择的不当导致的,知道的朋友,请解答下,谢谢! mysql根据汉字拼音排序查询,

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_

mysql 中文字段排序

方法1)select * from mytable order by CONVERT(chineseColumnName USING gbk);  (备注:chineseColumnName 位排序字段) 方法2)对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary". 原因: 在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的. 这

mysql中条件查询加排序和索引的关系

跟一个朋友,不错公司的主管交流时,对于mysql中条件查询和排序时 与索引的关系 mysql> explain select * from article where title='希望光伏企业挺过2个月' o rder by id desc\\\\\\\\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: article type: index pos