我在stackoverflow上发现了几个有关自定义排序和自定义排序字母的问题。但是,我找不到解决问题的方法。
想象我们有一个这样的表:
# videoid #
F01
F02
F031
F032
G01
G02
GEO01
PR011
PR012
TRI01
TRI021
TRI022
VEK01
并且我们希望将其排序为非字母,而不是AZ,而应为G,F,GEO,TRI,PR,VEK。为此,我必须定义自定义排序,并考虑%
通配符以获取所有以“ F”开头的结果。
我尝试了mysql的CASE
WHEN
查询,但是当有LIKE比较时,它似乎不起作用:
SELECT * FROM `videos`
ORDER BY CASE `videoid`
WHEN videoid LIKE 'G%' THEN 1
WHEN videoid LIKE 'F%' THEN 2
WHEN videoid LIKE 'GEO%' THEN 3
WHEN videoid LIKE 'TRI%' THEN 5
WHEN videoid LIKE 'PR%' THEN 4
WHEN videoid LIKE 'VEK%' THEN 6
ELSE 0
END
我的尝试
WHEN (LEFT(videoid, 1) = 'G') THEN 1
WHEN (LEFT(videoid, 1) = 'F') THEN 2
WHEN (LEFT(videoid, 3) = 'GEO') THEN 3
...
也失败了。
我也尝试使用FIELD
没有成功:
SELECT * FROM `videos`
ORDER BY FIELD(videoid, 'G%','F%','GEO%','TRI%','PR%','VEK%');
什么是正确的mysql查询?
您的语法错误。尝试这样的事情:-
SELECT * FROM `videos`
ORDER BY CASE
WHEN `videoid` LIKE 'GEO%' THEN 3
WHEN `videoid` LIKE 'G%' THEN 1
WHEN `videoid` LIKE 'F%' THEN 2
WHEN `videoid` LIKE 'TRI%' THEN 4
WHEN `videoid` LIKE 'PR%' THEN 5
WHEN `videoid` LIKE 'VEK%' THEN 6
ELSE 0
END
这可能对您有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句