当前位置:  开发笔记 > 后端 > 正文

MySQL ORDER问题

如何解决《MySQLORDER问题》经验,为你挑选了2个好方法。

我有一个非常简单的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.

有任何想法吗?



1> dkretz..:
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".


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



2> Tim..:

这将做你想要的:

select * 
from myTable
order by field(myID, 8, 7, 6) desc;

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

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

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有