查询条件和条数,先查询两条免费的,后面为vip

表里有个字段level,为1时免费,为2时只有vip可在观看,
查询列表时,怎么一条sql查询出前两条为免费的,后面均为vip的
哪位神给点意见

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 6

union(或union all) SELECT * FROM 文章表名 WHERE level ='2 'UNION ALL (SELECT * FROM 文章表名 WHERE level ='1' LIMIT 0,2) ORDER BY level LIMIT 0,15; :smiley: :smiley: :smiley: :smiley:

6个月前 评论
lchola 6个月前
颠倒的玉石 6个月前

应该先判断身份吧 vip就不用限制查询 不是vip就限制level = 1的

6个月前 评论
laravelUsers (楼主) 6个月前
PostModel::where(function (Builder $builder){
            if (\Auth::user()->is_vip === true) {
                $builder->where('level',2);
            } else {
                $builder->where('level',1);
            }
        })->get();
6个月前 评论
laravelUsers (楼主) 6个月前

union(或union all) SELECT * FROM 文章表名 WHERE level ='2 'UNION ALL (SELECT * FROM 文章表名 WHERE level ='1' LIMIT 0,2) ORDER BY level LIMIT 0,15; :smiley: :smiley: :smiley: :smiley:

6个月前 评论
lchola 6个月前
颠倒的玉石 6个月前

其实比较适合查询出来以后后端再做处理。只有前2两条正常显示,后面的数据做特殊处理

6个月前 评论
tumobi

分两次查吧,第一次查两条免费的;后一次查vip的。最后合并。 程序可以轻松解决的,就不要为难 SQL 了。

6个月前 评论

用level字段排序一下,就满足这个目的咯

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!