SQL ORDER BY多个字段

时间:2015-06-03 11:40:43

标签: mysql sql

我有这个问题:

SELECT
  id, name
FROM
  data
ORDER BY
  FIELD(id, 4, 5, 8, 10) DESC,
  name

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

FIELD(id, 4, 5, 8, 10)中的ID来自其他来源。它们表示在外国来源中是否有给定id的数据。

1 个答案:

答案 0 :(得分:5)

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

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