【发布时间】:2011-11-18 14:05:56
【问题描述】:
我有一组按特定顺序传递的 ID,需要保留。 我正在从几个左连接查询与每个 ID 相关的数据。 ID 是从搜索中返回的,因此必须保持顺序以使结果有效(否则它会使搜索变得毫无意义)。
我的代码看起来像这样;
$this->db->where_in('id', $array_of_ordered_ids);
例如-
$this->db->where_in('id', array(4,5,2,6));
将按 2、4、5、6 的顺序返回结果。
我希望它保留顺序并返回结果 4,5,2,6。
谢谢,
【问题讨论】:
-
你需要添加一个 order by 子句来告诉 SQL Server 以什么顺序返回行,
in(4,5,2,6)只会指定返回哪个而不是顺序。 -
你能举出任何使用 CI 的 activerecord 类的 order_by 函数的例子吗?与 where_in 函数不同,order_by 不接受数组作为第二个参数,并且除了可以对 desc、asc 和 random 进行排序之外,文档并没有说明太多。
-
我添加了一个答案,展示了如何做到这一点(从数组中创建一个字符串)以及您可以使用哪个 mysql 函数。希望对您有所帮助。
标签: php mysql codeigniter search activerecord