MySQL ORDER问题

Bog*_*scu 3 mysql sql

我有一个非常简单的SQL查询,但缺少一些东西,我还没有找到这个问题的答案.问题是我选择了一些带有几个ID的字段,我希望按照这个特定的顺序排序结果.

查询如下

SELECT `content`.* 
FROM   `content` 
WHERE  (user_id = "1" AND ( id = "4" OR id = "7" OR id = "5" OR id = "8" )) 
Run Code Online (Sandbox Code Playgroud)

默认顺序是"id ASC"(id是我的主键),但我希望在这种特殊情况下订单为4,7,5,8.

有任何想法吗?

dkr*_*etz 10

ORDER BY CASE user_id  
    WHEN "4" THEN 1  
    WHEN "7" THEN 2  
    WHEN "5" THEN 3  
    WHEN "8" THEN 4  
    ELSE 5  
END
Run Code Online (Sandbox Code Playgroud)

如果要对其进行概括,可以创建一个包含两列的新表 - "user_id"和"order_by_val",连接到它,以及"ORDER BY order_by_val".


编辑:Per @Tim,MySQL有一个专有函数 - FIELD() - 正如他在帖子中所提到的,如果你不关心可移植性,或者函数返回值是不可优化的问题.


Tim*_*Tim 5

这将做你想要的:

select * 
from myTable
order by field(myID, 8, 7, 6) desc;
Run Code Online (Sandbox Code Playgroud)

您可以设置您想要显示的任何ID(或其他)的顺序,之后任何其他ID都会跟随.希望有所帮助.

更多相关内容@ http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_field