我有一个非常简单的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".
这将做你想要的:
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