larvel mysql count,Laravel带条件查询多个count
在一个数据表中,我们需要用到聚合函数count来查询符合条件的总数。
举例一个场景:
我们有一个帖子,这个帖子可以分别被好中差评,好中差评记录用一个单独的记录表来存储。
如果用户点击好评,那么该帖子作者的经验值就+1,中评就不做操作,点了差评就把作者的经验值-1。
同理:该帖子被点击了好中差评,该帖子的好中差评的计数也会相应的发生改变。
那么按照常规的办法就是:
当用户点击了好评,我们去评价数据库查询到点击好评的个数,再去查点击差评的个数,他们一相减就是用户的经验值了
好评的查询条件为where('evaluate', 1),差评的查询条件为where('evaluate', 3)。就是评价表的字段evaluate来存储是好评还是差评。$exp_interview =
MemberEvaluateModel::query()
->where('return_id', $model['member_id'])
->whereIn('type', [2, 3])
->where('evaluate', 1)
->count()
-
$exp_interview2 = MemberEvaluateModel::query()
->where('return_id', $model['member_id'])
->whereIn('type', [2, 3])
->where('evaluate', 3)
->count();
我们发现,这里做了两次数据查询的动作,这样写肯定是行得通的,而且好理解,但是是不是感觉就不太对啊?
为什么要去做两次操作?直接一步查出来不行吗?直接带条件查询多个count多好?
下面介绍两种方法
第一种groupBy$exp_shen = MemberEvaluateModel::query()->where('return_id',$model['member_id'])
->whereIn('type', [1, 4])
->selectRaw("evaluate,COUNT(*) as exp")
->groupBy("evaluate")
->get()->toArray();
查询出来的结果是:
这里还需要我们去遍历一下,把两个值相减一下就能得到我们想要的实际经验值了。
遍历我们就不说了,感觉还是有点麻烦啊
那就说一下另外一种方法
第二种方法DISTINCT$exp_interview =
MemberEvaluateModel::query()
->where('return_id', $model['member_id'])
->whereIn('type', [2, 3])
->selectRaw("COUNT(DISTINCT IF(evaluate=1,id,NULL)) - COUNT(DISTINCT IF(evaluate=3,id,NULL)) as exp")
->first();
打印结果
这样就知道得到了我们想要的经验值,所以第二种方法更简单快捷。
同样,我们计算到了该贴作者的经验值,我们同样可以计算到该帖子的好中差评的准确计数$like_count = MemberEvaluateModel::query()
->where("pid", $model['id'])
->where("type", $params['type'])
->selectRaw("COUNT(DISTINCT IF(evaluate=1,evaluate,NULL)) as number_like,COUNT(DISTINCT IF(evaluate=2,evaluate,NULL)) as number_medium,COUNT(DISTINCT IF(evaluate=3,evaluate,NULL)) as number_hate")
->first();
打印结果
larvel mysql count,Laravel带条件查询多个count相关推荐
- bootstrap-table使用 带条件查询翻页及数据更新的问题。
bootstrap-table很容易上手,方便易用.自己在使用bootstrap-table时查询的参数如下: { limit: params.limit, //页面大小 offset: pa ...
- Mysql动态数据多条件查询
Mysql动态数据多条件查询 前言 有的时候,我们进行数据的数据查询的时候,我们会加入筛选条件. 例如: select * from user where username = ? // ? 指的是自 ...
- Mybatis-plus :分页带条件查询
StudentController @ApiOperation("分页带条件查询学生信息")@GetMapping("/getStudentByOpr/{pageNo}/ ...
- 李玉婷MYSQL进阶02:条件查询
李玉婷MYSQL进阶02:条件查询 语法结构: select: 查询列表 from:表名 where: 筛选条件 分类: 一.条件表达式 示例:salary>10000 条件运算符:> & ...
- gorm Preload与Joins带条件查询--闭坑指南与示例
gorm Preload与Joins带条件查询--闭坑指南与示例 一. Preload与Joins的区别 二. 使用示例 1. Preload 1.1 Preload 带条件查询 2 Joins 2. ...
- vue+node多条件查询 分页_SpringBoot+JPA框架分页、带条件查询等操作
前言 最近研究JPA框架,初学SpringBoot时也简单学过,但是不是很深入,所以这次主要是说一些进阶且常用.实用的操作! 前置准备 创建两张表或者让JPA自动建表,任意选择!学生表 package ...
- MySQL总结:02_条件查询
条件查询 语法: select 查询列表 from表名 where筛选条件; 分类: 一.按条件表达式筛选 简单条件运算符:> < = != <> >= <= #案 ...
- MySQL数据库中where条件查询(比较运算符查询、逻辑运算符查询、模糊查询、范围查询、空判断查询)
1. where条件查询的介绍 where条件查询可以对表中的数据进行筛选,条件成立的记录会出现在结果集中. where语句支持的运算符: 比较运算符 逻辑运算符 模糊查询 范围查询 空判断 wher ...
- mysql查询18至28岁的人,MySQL数据库-数据的条件查询(where) 命令演示
条件查询 elect - from 表名 where - 比较运算符 > 查询大于18岁的信息 select * from students where age>18; select id ...
- vue 前端项目带条件查询的分页列表开发实战
一 添加医院设置路由 修改文件 E:\vue-sdgt\src\router\index.js {path: '/hospital',component: Layout,redirect: '/hos ...
最新文章
- OpenCV for Ios 学习笔记(4)-标记检测1
- 有人做出了中文版GPT-2,可用于写小说、诗歌、新闻等;15亿参数版GPT-2被两名研究生复现...
- python工具是什么-使用Python编写命令行工具有什么好的库?
- Hbase写入量大导致region过大无法split问题
- ajax empty,jQuery empty仅在AJAX调用后的第二次单击时起作用
- 四十七、Tableau地理可视化
- oracle之基本的过滤和排序数据之课后练习
- CANopen | 移植01 - STM32H743 + Canfestival的移植并让FDCAN1运行CANopen协议
- CentOS7编译安装libc++和libc++abi
- colspan会影响内部单元格宽度失效_封装胶残留致MEMS振动传感器失效分析
- Java测试工具Mock详解
- RIME中州韵输入法词库扩充(搜狗词库,QQ拼音词库,清华词库,拆字词库U模式等)
- Zblog模板调用标签情况说明
- systemd 知:介绍
- 运放电路的工作原理_陶瓷气体放电管工作原理全业电子
- 【Windows】win10 禁止 IE 自动跳转到 Edge
- 解决 XXX cannot be resolved or is not a field 问题
- 你们听歌都是用什么软件听?这里有三款优秀的小众音乐播放器!
- mysql批量插入没有返回主键id
- scrapy 爬取论坛帖子名称及链接(递归方式获取)
热门文章
- SSh三大框架的作用
- codeforces 463A Caisa and Sugar 解题报告
- ASP.NET中 Bin,App_Browser,App_code,App_Data,App_Theme 等文件
- ASP.NETSpring.NETNHibernate最佳实践(七)——第3章人事子系统(4)人事子系统小结...
- 【学堂在线数据挖掘:理论方法笔记】第10天(4.4)
- 从零基础入门Tensorflow2.0 ----五、19. feature_column , keras_to_estimator
- 数据结构:实验四 图的遍历
- c++中的堆(优先级队列 priority_queue)
- android实现Materia Design风格APP(一):开篇
- 多线程(一)--线程的创建,Thread类与Runnable接口