mysql - 按自定义顺序对包含字母和符号的值进行排序

标签 mysql sql sorting

你能改变MySQL按功能排序吗?我正在尝试根据任意顺序对我的值进行排序。

目前正在寻找注入(inject)函数的方法,该函数可能会帮助我解决这个问题,而无需添加列和修改导入。

这是我想要的顺序:

AAA
AA+
AA
AA-
A+
A
A-
BBB+
BBB
BBB-
BB+
BB
BB-
B+
B
B-
CCC+
CCC
CCC-
CC

这是我使用排序依据的结果:

A
A+
A-
AA
AA+
AA-
AAA
B
B+
B-
BB
BB+
BB-
BBB
BBB+
BBB-
C
CC
CCC
CCC+
CCC-

编辑: 尝试但出现语法错误:

CREATE FUNCTION sortRating (s CHAR(20))
RETURNS INT(2)
DECLARE var INT
CASE s
    WHEN 'AAA' THEN SET var = 1
    WHEN 'AA+' THEN SET var = 2
    ELSE
        SET VAR = 3
END CASE
RETURN var
END;

最佳答案

这可以使用以下语法:

ORDER BY FIELD(<field_name>, comma-separated-custom-order)

例如,如果您要排序的表达式称为 rating,那么您的 ORDER BY 子句将显示为:

ORDER BY FIELD(rating, 'AAA', 'AA+', 'AA', 'AA-', 'A+', 'A', 'A-', 
                       'BBB+', 'BBB', 'BBB-', 'BB+', 'BB', 'BB-', 
                       'B+', 'B', 'B-', 'CCC+', 'CCC', 'CCC-', 'CC')

这是关于 FIELD FUNCTION 的文档

关于mysql - 按自定义顺序对包含字母和符号的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28814730/

相关文章:

php - 名称-值和键-值对均在 PHP 文件中创建(用于 json 编码)

mysql - 每个俱乐部成员(member)的 WooCommerce 购买摘要 (mySQL)

java - 我需要了解如何从数据库中获取唯一的随机行

当行数多于 IN 值时,MYSQL 返回 null

c# 对自定义列表进行排序

python - 从python中的特定索引值排序列表

php - 在表格中垂直显示来自数据库的数据

Php MySQL 如何更新/插入数据库行

sql - 如何在 SQL Server 中使用 JOIN 执行 UPDATE 语句?

python - 如何从元组列表中删除重复项但保持原始顺序