在一个数据表中,我们需要用到聚合函数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相关推荐

  1. bootstrap-table使用 带条件查询翻页及数据更新的问题。

    bootstrap-table很容易上手,方便易用.自己在使用bootstrap-table时查询的参数如下: { limit: params.limit,     //页面大小 offset: pa ...

  2. Mysql动态数据多条件查询

    Mysql动态数据多条件查询 前言 有的时候,我们进行数据的数据查询的时候,我们会加入筛选条件. 例如: select * from user where username = ? // ? 指的是自 ...

  3. Mybatis-plus :分页带条件查询

    StudentController @ApiOperation("分页带条件查询学生信息")@GetMapping("/getStudentByOpr/{pageNo}/ ...

  4. 李玉婷MYSQL进阶02:条件查询

    李玉婷MYSQL进阶02:条件查询 语法结构: select: 查询列表 from:表名 where: 筛选条件 分类: 一.条件表达式 示例:salary>10000 条件运算符:> & ...

  5. gorm Preload与Joins带条件查询--闭坑指南与示例

    gorm Preload与Joins带条件查询--闭坑指南与示例 一. Preload与Joins的区别 二. 使用示例 1. Preload 1.1 Preload 带条件查询 2 Joins 2. ...

  6. vue+node多条件查询 分页_SpringBoot+JPA框架分页、带条件查询等操作

    前言 最近研究JPA框架,初学SpringBoot时也简单学过,但是不是很深入,所以这次主要是说一些进阶且常用.实用的操作! 前置准备 创建两张表或者让JPA自动建表,任意选择!学生表 package ...

  7. MySQL总结:02_条件查询

    条件查询 语法: select 查询列表 from表名 where筛选条件; 分类: 一.按条件表达式筛选 简单条件运算符:> < = != <> >= <= #案 ...

  8. MySQL数据库中where条件查询(比较运算符查询、逻辑运算符查询、模糊查询、范围查询、空判断查询)

    1. where条件查询的介绍 where条件查询可以对表中的数据进行筛选,条件成立的记录会出现在结果集中. where语句支持的运算符: 比较运算符 逻辑运算符 模糊查询 范围查询 空判断 wher ...

  9. mysql查询18至28岁的人,MySQL数据库-数据的条件查询(where) 命令演示

    条件查询 elect - from 表名 where - 比较运算符 > 查询大于18岁的信息 select * from students where age>18; select id ...

  10. vue 前端项目带条件查询的分页列表开发实战

    一 添加医院设置路由 修改文件 E:\vue-sdgt\src\router\index.js {path: '/hospital',component: Layout,redirect: '/hos ...

最新文章

  1. OpenCV for Ios 学习笔记(4)-标记检测1
  2. 有人做出了中文版GPT-2,可用于写小说、诗歌、新闻等;15亿参数版GPT-2被两名研究生复现...
  3. python工具是什么-使用Python编写命令行工具有什么好的库?
  4. Hbase写入量大导致region过大无法split问题
  5. ajax empty,jQuery empty仅在AJAX调用后的第二次单击时起作用
  6. 四十七、Tableau地理可视化
  7. oracle之基本的过滤和排序数据之课后练习
  8. CANopen | 移植01 - STM32H743 + Canfestival的移植并让FDCAN1运行CANopen协议
  9. CentOS7编译安装libc++和libc++abi
  10. colspan会影响内部单元格宽度失效_封装胶残留致MEMS振动传感器失效分析
  11. Java测试工具Mock详解
  12. RIME中州韵输入法词库扩充(搜狗词库,QQ拼音词库,清华词库,拆字词库U模式等)
  13. Zblog模板调用标签情况说明
  14. systemd 知:介绍
  15. 运放电路的工作原理_陶瓷气体放电管工作原理全业电子
  16. 【Windows】win10 禁止 IE 自动跳转到 Edge
  17. 解决 XXX cannot be resolved or is not a field 问题
  18. 你们听歌都是用什么软件听?这里有三款优秀的小众音乐播放器!
  19. mysql批量插入没有返回主键id
  20. scrapy 爬取论坛帖子名称及链接(递归方式获取)

热门文章

  1. SSh三大框架的作用
  2. codeforces 463A Caisa and Sugar 解题报告
  3. ASP.NET中 Bin,App_Browser,App_code,App_Data,App_Theme 等文件
  4. ASP.NETSpring.NETNHibernate最佳实践(七)——第3章人事子系统(4)人事子系统小结...
  5. 【学堂在线数据挖掘:理论方法笔记】第10天(4.4)
  6. 从零基础入门Tensorflow2.0 ----五、19. feature_column , keras_to_estimator
  7. 数据结构:实验四 图的遍历
  8. c++中的堆(优先级队列 priority_queue)
  9. android实现Materia Design风格APP(一):开篇
  10. 多线程(一)--线程的创建,Thread类与Runnable接口