Mysql 5.7 取分组第一条
以下表为例,需要取每个班级、被选的次数最多的学科,比如1班的有三个选数学的,一个选语文的,那么期望返回的是数学,其他同理。
id | name | class | course |
---|---|---|---|
1 | 张三 | 1 | 数学 |
2 | 李四 | 1 | 数学 |
3 | 王五 | 1 | 数学 |
4 | 赵六 | 1 | 语文 |
5 | 黑七 | 2 | 语文 |
6 | 猪八 | 2 | 语文 |
7 | 琴九 | 2 | 数学 |
8 | 王十 | 3 | 数学 |
9 | 毛十一 | 3 | 数学 |
10 | 萧十二 | 3 | 数学 |
11 | 阿十三 | 3 | 语文 |
第一种方法: limit
+ group by
例
SELECT t.*
FROM( SELECT ta.class,ta.course,count(*) as countsFROM courses as ta group by ta.class,ta.courseorder by counts desc // 在这里排序LIMIT 1000 //这里是必须的,而且好像最大值是1万) t
GROUP BY t.class //外层使用分组
返回结果如下
class | course | counts |
---|---|---|
1 | 数学 | 3 |
2 | 语文 | 2 |
3 | 数学 | 3 |
在站内找了几篇博文,基本都是这个套路,也许这种方法性能会好一些,而且好像可以直接取到最大值那一整行的数据,可以说非常方便了。
比如这篇博文还对优化进行了分析:https://blog.csdn.net/u013066244/article/details/116461584
但是:由于公司服务器启用了ONLY_FULL_GROUP_BY
,所以没法使用。
第二种方法:group_concat
+substring_index
select tb.class,SUBSTRING_INDEX(GROUP_CONCAT(tb.course order by counts desc),',',1) as course
from (SELECT ta.class,ta.course,count(*) as countsFROM courses as ta group by ta.class,ta.course) as tb
group by tb.class;
返回结果如下
class | course |
---|---|
1 | 数学 |
2 | 语文 |
3 | 数学 |
关于这个方法,已经有博主写过了,个人觉得很详细了,连接在此:https://blog.csdn.net/MyfishCake/article/details/120175776
Mysql 5.7 取分组第一条相关推荐
- 利用partition分组查询 查询每个分组第一条数据
利用partition分组查询 查询每个分组第一条数据 数据库:sqlserver (其他数据库没有尝试) row_number() over(partition by year(createtime ...
- unicloud aggregate的group保留查询数据,提取每个分组第一条数据某个字段值
直接上代码, .group({_id:"$aaa._id",//按照某个参数分组arr:{"$push":{ //push方法 就是$type_cat相同的数据 ...
- xslt 标签取集合第一条数据_1+x证书Web前端开发中级理论考试(试卷1)
2019年下半年 Web前端开发中级 理论考试 (考试时间19:00-20:30 共150分钟,测试卷1) 本试卷共3道大题,满分100分. 请在指定位置作答. 一.单选题(每小题2分,共30小题,共 ...
- xslt 标签取集合第一条数据_用 Asp.Net 建立一个在线 RSS 新闻聚合器
原代码下载:RSSAggregator.msi 原文出处:Creating an Online RSS News Aggregator with ASP.NET [b]概要 本文讲解了如何使用 XML ...
- mysql中如何查询表的第一条和最后一条记录
第一条: select * from 表名 limit 1; 最后一条:select * from表名 order by 表_id desc limit 1 最后一条:select * from表名 ...
- mysql相同姓名只显示第一条_SQL中遇到多条相同内容只取一条的最简单实现方法...
SQL中经常遇到如下情况,在一张表中有两条记录基本完全一样,某个或某几个字段有些许差别, 这时候可能需要我们踢出这些有差别的数据,即两条或多条记录中只保留一项. 如下:表timeand 针对time字 ...
- 【爬虫】爬取冰冰第一条视频,保存至csv文件(多页爬取)
import requests import timer from bs4 import BeautifulSoup import demjson import asyncio import pymy ...
- xslt 标签取集合第一条数据_XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数...
任何的编程语言或者是SQL语句都有内置的函数或方法,而强大灵活的xslt技术也是如此.熟练掌握XSLT的常用函数的用法,XSLT的应用将变得如此轻松,你会发现XSLT比想象中还要牛!以下是xslt数值 ...
- mysql 取第一条_MySQL索引底层(一)索引底层原理
微信公众号:Java患者 专注Java领域技术分享 MySQL索引底层原理 局部性与页 在操作系统中,我们执行一个指令去磁盘取数据,那么他会从磁盘取出4KB数据,这个4KB就是一个局部单位,而这4KB ...
最新文章
- 掏空老底,值得推荐的10个学习神器,总有一个用得上!
- Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)
- SAP收购的coresystem app的使用截图
- 模拟耗时操作_在集成测试中模拟耗时的动作
- 小甲鱼Python第二十二讲课后习题
- 矩阵加法(信息学奥赛一本通-T1124)
- 那些让我们哭的一塌糊涂的句子
- Linux 查看命令
- Django-ModelFrom中修改save后的字段值
- java调c 申请内存_JAVA简单调用C/C++语言(JNI学习三)
- cve2018 linux内核提权漏洞,CVE-2018-18955:较新Linux内核的提权神洞分析
- 20200515每日一句
- android手机远程控制电脑源代码,手把手教你用安卓手机实现远程控制电脑-网络教程与技术
-亦是美网络...
- 计算机专业介绍课件,计算机专业介绍课件
- 美团机器学习InAction系列—实例详解机器学习如何解决问题
- 减肥要吃...淡化色斑要吃....皮肤干燥要吃...长了小痘痘要吃...整天对着电脑要吃...记住这些
- laravel安装 nwidart/laravel-modules 出现的问题
- 跨平台.NET Core--微软开源方向
- IBM Websphere MQ 使用详解
- 现在比较流行的编程语言_比较流行的编程语言