SQL ORDER BY多个字段

sod*_*sod 0 mysql sql

我有这个问题:

SELECT
  id, name
FROM
  data
ORDER BY
  FIELD(id, 4, 5, 8, 10) DESC,
  name
Run Code Online (Sandbox Code Playgroud)

Ids 4, 5, 8, 10排名靠前.到现在为止还挺好.但后来我想排序name.这不起作用.可能FIELD已经确定了具体的订单吗?我可以更改SQL,这样我仍然可以告诉SQL哪些id应该在顶部(在真/假关系中)但是按名称进行最终排序?某种枚举?

ids FIELD(id, 4, 5, 8, 10)来自另一个来源.它们表示在外源中是否有给定id的数据.

ugh*_*hai 5

你可以CASE WHEN像这样使用ANSI 92兼容.

SELECT
  id, name
FROM
  data
ORDER BY
  CASE WHEN id IN (4, 5, 8, 10) THEN 0 ELSE 1 END ASC,
  name
Run Code Online (Sandbox Code Playgroud)