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

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 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:

3年前 评论
lchola 3年前
颠倒的玉石 3年前

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:

3年前 评论
lchola 3年前
颠倒的玉石 3年前

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

3年前 评论

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

3年前 评论
洪利 (楼主) 3年前
PostModel::where(function (Builder $builder){
            if (\Auth::user()->is_vip === true) {
                $builder->where('level',2);
            } else {
                $builder->where('level',1);
            }
        })->get();
3年前 评论
洪利 (楼主) 3年前
tumobi

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

3年前 评论

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

3年前 评论

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