1
cye3s 2017 年 3 月 28 日 oracle 我知道, order by decode ,然后搜索到 MySQL 的, ORDER BY FIND_IN_SET(FieldName,"高,中,低")
|
3
debye 2017 年 3 月 28 日
可以是可以,但是您这个数据库设计是不是有点问题
|
4
Reign 2017 年 3 月 28 日 这个数据库设计得真让人呕心沥血,新建一个字段啊, tinyint , 3 、 2 、 1 代表对应的三个值,写个脚本替换到这个字段就行了呗
|
5
qiayue PRO 为了程序快,增加一个字段,再加上索引
|
7
flyingghost 2017 年 3 月 28 日
select * from user where bigger='高'
union select * from user where bigger='中' union select * from user where bigger='低' |
8
Braid OP @flyingghost 你这个方法也可以。。。赞一个
|
10
magicdawn 2017 年 3 月 28 日
select case
when col = '高' then 3 when col = '中' then 2 when col = '低' then 1 end as priority from ... order by priority desc |
11
ApizzaTeam 2017 年 3 月 28 日
@Reign 确实应该这样,数据库设计的问题
|
12
kevinzhwl 2017 年 3 月 28 日
邪路:统一变成“ 10 高”,“ 20 中”,“ 30 低”
|
14
flniu 2017 年 3 月 28 日
1 楼的方案是奇技淫巧,不改变现有数据模型的临时方案可以用这个。
长期的方案是把字段改成有序的数值类型或枚举类型。 |
15
Mitt 2017 年 3 月 29 日
10L 的方法 +1
|
16
nikubenki 2017 年 3 月 29 日
DELIMITER $$
USE `数据库名`$$ DROP FUNCTION IF EXISTS `my_translate`$$ CREATE DEFINER=`root`@`%` FUNCTION `my_translate`(param VARCHAR(100)) RETURNS VARCHAR(100) CHARSET utf8 BEGIN SET param = REPLACE(param,'低','a'); SET param = REPLACE(param,'中','b'); SET param = REPLACE(param,'高','c'); RETURN param; END$$ DELIMITER ; 然后 order by 这个 function 返回值? |