首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次有意思 SQL 实现 → 分组后取每组第一条记录

因为这是多个任务一起查,也就没法用 LIMIT 1 了     那如何查出每个任务最新执行成功那一条记录了?     ...这里也就对应了文章标题:分组后取每组第 1 条记录     实现方式其实有很多,我这里提供一种,如下     结合索引 idx_status_task_date_modify(exec_status... 数据量,也就是说数据量不大   那么用一个 SQL 就可以实现业务(直接联表 t_business 、 t_business_task 、 t_task 、 t_task_latest_exec_log...总结   1、大家写 SQL 时候,一定要多结合执行计划来写 神奇 SQL 之 MySQL 执行计划 → EXPLAIN,让我们了解 SQL 执行过程!   ...1、分组后如何取前 N 条     2、分组后如何取倒数 N 条

1.6K40

SQL分组查询后取每组前N条记录

一、前言 分组查询是常见SQL查询语句。...首先,我们知道MySQL数据库分组功能主要是通过GROUP BY关键字来实现,而且GROUP BY通常得配合聚合函数来使用用,比如说分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)...但是今天我们要探讨不是GROUP BY关键字学习和使用,而是一种有点另类分组”查询。 最近,项目上遇到这样一个功能需求。...而业务系统官网上需要滚动展示一些热门资讯信息列表(浏览量越大代表越热门),而且每个类别的相关资讯记录至多显示3条,换句话:“按照资讯分类分组,取每组前3条资讯信息列表”。...我们想在查询每条资讯记录时要是能查出其所在类型排名就好了,然后根据排名字段进行过滤就好了。这时候我们就想到了子查询,而且MySQL是可以实现这样功能子查询

25.7K32
您找到你想要的搜索结果了吗?
是的
没有找到

合并求取分组记录第一条数据

有朋友问, 关于电影记录查询SQL,突然不知道如何下手,给个提示参考一下啊,谢谢。...','007'); INSERT INTO MovieInfo VALUES ('007第三部','电影链接13','007'); GO SELECT * FROM MovieInfo; 先写一个分组并求分组记录大于...,只有1条记录: MovieType Name 007 007第二部 在同事指导下,说ROW_NUMBER() 可以在给记录编号同时指定分组,然后我们取分组中编号为1记录即可,先来分组编号...同事说可以利用聚合函数或者自查询,下面是给出2条SQL语句,功能一样: select * from MovieInfo a where name=(select MIN(name) from MovieInfo...下面是我今天练习这个SQL查询PDF.NET集成开发工具,该工具可以在官网找到下载链接。 ?

1.2K100

MySQL group by分组后,将每组所得到id拼接起来

背景 需要将商品表中sku按照spu_id分组后,并且得到每个spu下sku_id,需要使用到group_concat函数 select spu_id, count(*), group_concat...') as ids from product_sku where category = 'tv' group by spu_id; group_concat函数 group_concat函数,实现分组查询之后数据进行合并...可以排除重复值; 2> 可以使用order by子句对结果中值进行排序; 示例: select spu_id, count(*), group_concat(id SEPARATOR ', ')...而MySql默认最大拼接长度为1024个字节,一般情况下是够用,但如果数据量特别大,就会存在java层返回内容被截断问题,这时,为了保证拼接数据完整性,就需要手工修改配置文件group_concat_max_len...本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您支持。 首发链接:https://www.cnblogs.com/lingyejun/p/17581506.html

34210

SQL 获取状态一致分组

星星点灯是一家水果店,它提供了外卖水果拼盘服务。水果店能够提供四种水果拼盘:水果魔方、海星欧蕾、猫头鹰、草莓雪山,下表反应了某一时刻店内水果准备情况。...当有客户订水果拼盘时,只有拼盘要用到所有水果都准备好了才能制作。 现在,我们要写 SQL 找出可以立即制作水果拼盘名称。 实现方式比较多,有一种是通过数量去判断。...比如水果魔方,它需要水果有 5 种,当这些水果处于准备好状态数量也为 5 时,它就可以被制作了。...我们可以换另一种表达,当某个水果拼盘下没准备好水果数量为 0 时,这个拼盘可以被制作。...,那就说明不存在没准备好水果。

55930

SQL字符串分组聚合(ZT)

本文转载于T-Sql:字符串分组聚合,也许你还有更简单办法?    ...今天在看订阅RSS时候,看到这么一个问题:T-Sql中如何对分组信息进行聚合,并以逗号连接字符;也就是对一个表中某个字段进行分组,然后对另一个字段聚合,如果表达得不太清楚,请看下面的表。...,然后再查询语句里面调用这个聚合函数;实际上还有更简单办法,这是作者给出解决办法,没有用到自定义聚合函数,他用是FOR XML PATH(‘’)这样处理方式,感觉真是爽 with t  as(...Stuff函数是一样....Sql语言一样,都把字符串当作字符数组处理,但一个差别在于,大多数程序设计语言数组下标起始位为0,而Sql Server中为1,由于惯性思维,常常把一般程序设计语言中0起始位带至SQL编程中。

1.8K10

sql查询基本语法_以下select语句语法正确

(展示时候,只会展示分组记录第一条记录),分组时,一般会结合使用count()、max()、min()、avg()、sum()函数。...; sql语句意思是:my_student表以c_id进行分组,然后显示分组每组c_id名称、每组总数、每组最高、最低、平均身高和每组年龄总和。...c_id ,sex; 表示含义是,对整个表先按照c_id进行分组,然后在此分组基础之上,然后每组再按照sex,进行分组。...C、多字段分组(加上显示每组某一字段所有数据) selectc_id,sex,count(*),max(height),min(height),avg(height),sum(age) ,GROUP_CONCAT...却不能做having能做很多事情,主要是因为 where只能在磁盘提取数据时候对数据进行操作;而在内存中对数据进行group by分组之后结果进行处理,只能通过having。

2.8K10

mysql分组和排序同时使用时查询数据异常

,没有得到我们需要结果,这是因为group by 和 order by 一起使用时,会先使用group by 分组,并取出分组第一条数据,所以后面的order by 排序时根据取出来第一条数据来排序...,但是第一条数据不一定是分组里面的最新数据。...解决方案: 方案一: 使用子查询,先排序查出结果后作为临时表在分组。这里有个坑,必须要加limit,如果没有加,有些版本数据库也无法查处正确数据。...:= '', @num := 0) t ORDER BY a.Create_Time DESC ) x WHERE RANK = 1; 方案三: 使用Max()函数,根据地址分组查出每个地址最新数据时间...,然后将查询结果关联原表查出正确数据。

1.9K10

group by 和聚合函数

也就是查询结果是不确定,hash?这可能涉及到在磁盘存储等等,这里不去深究。因此,并不能确认第一次查出字段值,而且分组后不是条件值被合并后没有意义。...4.添加聚合函数 聚合函数有如下几种: 函数 作用 支持性 sum(列名) 求和 max(列名) 最大值 min(列名) 最小值 avg(列名) 平均值 first(列名) 第一条记录 仅Access...分析:   首先进行分组工作,group by name,这时8条数据被分成两组:dd和mm;然后count作用就是统计每组里面的个数,分别是5和3....,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定行。...having 子句作用是筛选满足条件组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定组,也可以使用多个分组标准进行分组

2K110

查询top1数据 想到关于select 返回数据

最近工作中有遇到查询分组第一条问题,由此想到了一些关于 select 返回数据顺序几个问题。 select 返回数据顺序在没有指定排序情况下是不确定,是一个集合。集合本身是没有顺序!!...对于分组获取第一条数据,很多博客给方案是先对数据进行排序,再对结果集进行分组,这样就能够获取到分组第一条数据了。说实话,这个很符合逻辑,我之前确实也是这么想。...还是以最初数据为例,需要按page_id进行分组,取每组中addtime最大一条数据,正确结果应该是: id page_id addtime 12 1 1558408852 9 3...第一条sql,先排序,然后对结果集进行分组操作得到结果是 id page_id addtime 1 1 1558342663 4 2 1558348351 6 3 1558348361...如果想要获取分组第一条,先分组,获取分组中排序字段最大或最小排序字段值(addtime),然后通过排序字段(addtime),分组字段(page_id)与原数据进行连表操作,取出其他字段数据。

1.2K30

MySQL语句与Java代码实现按需过滤企业员工资质证书

,取变动时间最近显示出来,其余不显示; 数据源:SAP生产系统通过RPC方式获取; 正文 下面是表主要结构(手机显示可能存在换上现象): 字段名称 类型 备注 employee_special_uuid...,加一个标识,比如加个字段显示x,过滤时候用sql直接出结果,挺方便,我问过SAP开发同事:no; 思路 代码没有新颖,只说一下我思路(也可能有些问题): 1、首先用MySQL语句GROUP...BY 已经三个字段结果分组分组结果:按照需求将数据分成一组一组每组数据并按照变动时间,最新在上面(也就是符合要求那一条,在最上面) 2、Java代码拿到数据集,进行处理; 3、刚才上面说了...,第一条是符合要求,就遍历数据集,每组数据集,用List特点,将所有元素置为相同元素,与第一条保持一致; 4、去重; 通过简单方式,实现了这个小需求; 总结 总结成简单的话, 1、先分组,...分组数据按照时间降序排列; 2、再用Java代码处理List,将list元素用遍历方式将值设置为一致; 3、将list去重;

51810

SQL 找出分组中具有极值

这些需求有两个共同点:一是需要做分组,有按部门分组、有按科目、也有按用户分组;二是在分组里面找到存在极值行,是整行数据,而不只是极值。...子查询 如果你数据库还不支持窗口函数,那可以先对 emp 分组,取出每个部门中最高薪资,再和原表做一次关联就能获取到正确结果。...在此之前,你可能很难想到可以使用 Left Join 达到分组求极值效果。现在就来揭开 Left Join 神秘面纱。...当 a.sal 是分组最大值时,a.sal < b.sal 条件不成立,关联出来结果中 b 表数据为 NULL。...因此,通过 WHERE b.sal IS NULL 可以找到每个分组里面 a.sal 最大记录。

1.7K30

【数据库】谈谈group by

大家好,又见面了,我是你们朋友全栈君。 前一段时间写SQL比较频繁,有时候想要用group by 来进行分组,却总是报错,今天就总结一下group by 用法。...course 在mysql中,可以查询到结果集,如下: 跟原始数据对比,可以发现,查询到结果集是每一门课程第一条记录,这样就丢失了一部分数据。...如果是在sql server中这么写是会直接报错,大家感兴趣的话可以测试一下。 其实group by函数是用来跟数据库统计函数结合使用,对数据进行分组统计。...查询结果: SELECT name,sex,course FROM `groupbytest` GROUP BY course,sex 对比以上两条SQL查出结果集,可以看出,查询结果跟...第一条是先根据sex进行分组,再根据course分组,而第二条是先根据course分组,再根据sex分组。 2.group by 和count函数一起使用:对学生性别进行统计。

1.7K20

MySQL单标查询

小练习: 1 查出所有员工名字,薪资,格式为 2 查出所有的岗位(去掉重复) 3 查出所有员工名字,以及他们年薪,年薪字段名为annual_year...1、首先明确一点:分组发生在where之后,即分组是基于where之后得到记录而进行 2、分组指的是:将所有记录按照某个相同字段进行归类,比如针对员工信息表职位分组,或者按照性别进行分组等 3...,默认拿到结果都是每组第一条数据但是你想,我们分组意义是什么,是不是说通过分组来统计一下整个组情况啊,不再是看某个人单独情况了,对不对,并且将来你在这样进行直接分组查询时候,可能因为你们公司设置...,只能得到字段名并且设置了sql_mode为only_full_group_by之后,select *,就不行了,会直接报错,只能select post ,post是你分组那个字段 2、 ONLY_FULL_GROUP_BY...post,count(id) as count from employee group by post;#按照岗位分组,并查看每个组有多少人,每个人都有唯一id号,我count是计算一下分组之后每组有多少

2.6K20
领券