2017-04-25 113 views
1

是否可以在MySQL或CI中自定义order_by查询?如我希望我的专栏按('1','11','4','2','21','3','5','7')排序,那么如果我将它作为ASC结果将按我的自定义顺序显示。CI有没有办法查询自定义order_by

如果这是不可能的,获得这些订单的最佳解决方法是什么?希望只使用MySQL查询的简单解决方案。

所有的答案和建议都受到欢迎。谢谢。

回答

5

订购场试试这一个。

$this -> db -> order_by('FIELD (table.id, 1, 11, 4,2,21,3,5,7)'); 

link

+0

很好,非常感谢很多人,在CI文档中找不到它。 – Charas

+0

我很高兴我能够帮助:) – webpic

0

纯Mysql的答案是肯定的,你可以通过一组列表与MYSQL FIELD()功能

SELECT * 
FROM mytable 
WHERE id IN ('1', '11', '4', '2', '21', '3', '5', '7') 
ORDER BY FIELD(id, '1', '11', '4', '2', '21', '3', '5', '7') 
+0

我没有测试过,但我不知道如果这些引号隐式转换剩余的数据为字符串。 – Strawberry

+0

@Strawberry你可能是对的。所以你说的单引号redunddent –

+0

我当然这么说。我也猜测他们是否改变了结果。 – Strawberry

相关问题