MySQL数据库某列等于某几个值的时候优先排序分页查询

需求:数据中有cate_id 列,用户关注了cate_id等于1,2,3的分类,这些分类在列表查询的时候排到前面。

$sql = "SELECT id,title,image FROM fa_instrument WHERE status='2' order by (";
foreach ($cate_ids as $key=>$value){
     if($key==0){
         $sql = $sql.'cate_id = '.$value;
     }else{
         $sql = $sql.' or cate_id = '.$value;
     }
}
//获取页码
$page = $this->request->post('page',1);
$sql = $sql.") desc LIMIT 5 OFFSET ".($page-1)*5;
//得到的sql是:SELECT id,title,image FROM fa_instrument WHERE status='2' order by (cate_id = 1 or cate_id = 2 or cate_id = 3) desc LIMIT 5 OFFSET 0
//获取总条数
$lists['total'] = InstrumentModel::where('status','2')->count();
//每页数量
$lists['per_page'] = 5;
//当前页
$lists['current_page'] = $page;
//最后一页页码
$lists['last_page'] = ceil($lists['total']/5);
//列表
$lists['data'] = Db::query($sql);

查询结果是

"data": {
		"total": 5,
		"per_page": 5,
		"current_page": 1,
		"last_page": 1,
		"data": [
			{
				"id": 6,
				"title": "标题111",
				"image": "/assets/img/avatar.png"
			},
			{
				"id": 7,
				"title": "标题111",
				"image": "/assets/img/avatar.png"
			},
			{
				"id": 8,
				"title": "标题111",
				"image": "/assets/img/avatar.png"
			},
			{
				"id": 9,
				"title": "标题111",
				"image": "/assets/img/avatar.png"
			},
			{
				"id": 10,
				"title": "标题111",
				"image": "/assets/img/avatar.png"
			}
		]
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值