This question询问如何在MySQL中指定排序顺序。
我想要做的是有两个排序级别 - 第一个是我指定的顺序,然后剩余的非指定值将以正常方式排序。
我尝试的是:
SELECT
version_id,
version_name
FROM
software_versions
ORDER BY
FIELD(version_id, 133, 41, 88),
version_name ASC
但是会发生的是行按版本名称排序,然后是FIELD(从查询的结构向后排序)。
有可能做我要问的事吗?查找表相对较小(100行左右),所以我对使用ORDER BY FIELD的性能不太担心。
我是否需要将其作为UNION重新编写?
答案 0 :(得分:3)
答案 1 :(得分:1)
我发现这个article解释了它。基本上,因为你没有指定所有的版本号,它将无法正常工作。解决方法是按字段函数排序,然后按字段本身排序。
ORDER BY FIELD(version, 88, 41, 133) DESC, version, version_name;
答案 2 :(得分:-1)
这是因为您没有在FIELD()函数中列出version_id的所有可能值。
这应该可行:
SELECT
version_id,
version_name
FROM
software_versions
WHERE
version_id IN (133, 41, 88)
ORDER BY
FIELD(version_id, 133, 41, 88),
version_name ASC