你可以按功能更改MySQL吗?我试图按照任意顺序对我的值进行排序.
目前正在寻找注入函数的方法,这可能会帮助我在这里添加一个列并修改导入.
这是我想要的顺序:
AAA
AA+
AA
AA-
A+
A
A-
BBB+
BBB
BBB-
BB+
BB
BB-
B+
B
B-
CCC+
CCC
CCC-
CC
Run Code Online (Sandbox Code Playgroud)
这是我使用sort by的结果:
A
A+
A-
AA
AA+
AA-
AAA
B
B+
B-
BB
BB+
BB-
BBB
BBB+
BBB-
C
CC
CCC
CCC+
CCC-
Run Code Online (Sandbox Code Playgroud)
编辑:尝试但得到语法错误:
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;
Run Code Online (Sandbox Code Playgroud)
可以使用以下语法:
ORDER BY FIELD(<field_name>, comma-separated-custom-order)
Run Code Online (Sandbox Code Playgroud)
例如,如果调用您要排序的表达式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')
Run Code Online (Sandbox Code Playgroud)
这是关于FIELD FUNCTION的文档