微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以预定义的顺序返回查询结果

如何解决以预定义的顺序返回查询结果

我不认为这是可能的,但是在这里找到了一个博客条目,似乎可以满足您的需求:

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");

将给不同的结果

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"8,2,5,9,7");

[FIND_IN_SET](http://dev.MysqL.com/doc/refman/5.0/en/string- functions.html#function_find-in- set)返回id给定第二个参数的位置,因此对于上面的第一种情况,id7的位置在集合中的位置1,2的位置在2,依此类推-MysqL在内部得出类似

id | FIND_IN_SET
---|-----------
7  | 1
2  | 2
5  | 3

然后按的结果排序FIND_IN_SET

解决方法

是否可以以SELECT预定顺序进行声明,即 选择ID 7,2,5,9和8 并以该顺序返回它们 ,仅基于ID字段?

这两个语句以相同顺序返回它们:

SELECT id FROM table WHERE id in (7,9,8)



SELECT id FROM table WHERE id in (8,7)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。