答案 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');