php - Mysql Codeigniter Active Record - 如何执行 where_in 查询并返回正确的结果顺序?

标签 php mysql codeigniter search activerecord

我有一组按特定顺序传递的 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。

谢谢,

最佳答案

要按数组中的顺序对结果进行排序,您可以执行以下操作:

$array_of_ordered_ids = array(4,5,2,6);

由于您已经知道数字的顺序,因此可以使用 Mysql FIELD()Docs功能:

ORDER BY FIELD(id, 4, 5, 2, 6);

要创建这样的字符串,您可以使用 implodeDocs :

$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));

试一试:

$array_of_ordered_ids = array(4,5,2,6);
$this->db->where_in('id', $array_of_ordered_ids);
$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));
$this->db->order_by($order); 

关于php - Mysql Codeigniter Active Record - 如何执行 where_in 查询并返回正确的结果顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443284/

相关文章:

mysql - 如何在排除数字的同时找到范围内的随机数

mysql - SQL 语句不返回结果

php - VSCODE 片段 PHP 自动填充命名空间

php - 如何避免 Request Entity Too Large 413 错误

mysql - SQL 设计模式 : how do I store multiple unique ids from different sites in mashup?

php - mysqli::real_connect(): (HY000/1049): codeigniter 中的未知数据库错误

php - CodeIgniter 基本 Controller 扩展

php - 选择待处理请求(Friendship Restful Api)PHP 和 MySql

php - 我必须对多维关联数组进行排序,但是我的方法不起作用

mysql - MySQL 5.7 中的 innodb_additional_mem_pool_size