如何在Codeigniter中对特定/某些行的表进行排序?

时间:2016-08-24 16:44:10

标签: php mysql codeigniter

如何使用活动记录在Codeigniter中编码此查询?

"SELECT * FROM `my_table` ORDER BY clm_name != 2 ASC"

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您想将pic_id = 2放在顶部始终并且更喜欢其余ascending/descending的自然顺序(pic_id),请按照查询进行操作如下:

SELECT * 
FROM pictures
ORDER BY (pic_id <> 2) , pic_id ASC;

如果您想将pic_id (2)置于底部,那么:

SELECT * 
FROM pictures
ORDER BY (pic_id = 2) , pic_id ASC;

注意:

MySQL布尔表达式解析为0/1。 因此,对于pic_id 2 (pic_id <> 2) returns 0,除了ORDER BY 0, <pic_id>之外的其余图片,订单看起来像ORDER BY 1, <pic_id>,而看起来像2的订单。< / p>

答案 1 :(得分:0)

您应该使用别名,例如使用case语句来分配别名列所需的值以及别名的顺序

$this->db->select(' col1, col2 , 
        case clm_name when !=2 then 100 else clm_name end as my_clm_name');
$this->db->from('my_table');
$this->db->order_by('my_clm_name   asc');