我有一个非常简单的 SQL 查询,但缺少一些东西,我还没有找到这个问题的答案。 问题是我选择了一些具有多个 ID 的字段,我希望结果按此特定顺序排序。
查询如下
SELECT `content`.*
FROM `content`
WHERE (user_id = "1" AND ( id = "4" OR id = "7" OR id = "5" OR id = "8" ))
默认顺序是“id ASC”(id 是我的主键),但在这种特殊情况下我希望顺序为 4,7,5,8。
有什么想法吗?
最佳答案
ORDER BY CASE user_id WHEN "4" THEN 1 WHEN "7" THEN 2 WHEN "5" THEN 3 WHEN "8" THEN 4 ELSE 5 END
如果你想概括它,你可以创建一个包含两列的新表 - “user_id”和“order_by_val”,加入它,以及“ORDER BY order_by_val”。
编辑:根据@Tim,MySQL 有一个专有函数 - FIELD() - 如他的帖子所述,如果您不关心可移植性,或者函数返回值不可优化的问题。
关于sql - MySQL ORDER问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/678196/