我有这个问题:
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的数据。
答案 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