精华内容
下载资源
问答
  • mysql分组排序取第一条
    千次阅读
    2022-05-20 17:41:28

    方式1:内层使用DISTINCT

    SELECT
        type,
        senderName,
        subTitle
    FROM
        (
            SELECT DISTINCT
                TYPE AS type,
                SENDER_USERNAME AS senderName,
                TARGET_NAME AS subTitle
            FROM
                `feed_message`
            ORDER BY
                CREATE_TIME DESC
        ) f
    GROUP BY
        type

    方式2:添加limit

    select id,user_name,user_sex,user_age from (
    SELECT id,user_name,user_sex,user_age FROM `user_test`
    order by user_age 
    limit 100
    )A
    group by A.user_sex

    更多相关内容
  • mysql分组排序取第一条数据

    千次阅读 2022-02-22 19:45:31
    mysql 根据一个字段分组,各种排序,然后,取第一条数据 1. 分组字段加排序字段先排序 2. 再按分组字段分组取第一条即可 with t_picture as( SELECT npi_product_id,is_default_one,update_time, uri FROM ...
    需求:

    mysql 根据某一个字段分组,然后组内排序,最后每组取排序后的第一条数据

    1. 先使用(分组字段+排序字段)排序

    相当于实现了分组和排序,只是没有取导每组的第一条数据;

    2. 再按分组字段分组,取第一条即可

    实例如下:

    with 
    t_picture as(
     SELECT npi_product_id,is_default_one,update_time, uri FROM datahub_product_attachment where type=1 ORDER BY npi_product_id,is_default_one DESC,update_time DESC
    )
    SELECT npi_product_id, (ARRAY_AGG(uri))[1] as uri FROM t_picture  group by npi_product_id
    
    

    必须在分组前排序,分组后排序是对分组字段和聚合字段排序。

    展开全文
  • Mysql取分组后的每组第一条数据 gruop by 分组后 进行 order by mysql会按照 先分组排序的形式进行输出 并不能做到每组中的第一条数据取出。 我的思路是 : 先将要查询的数据表转换成已经排序的临时表 在进行 分组...
  • MySQL分组取组内第一条数据

    前言

    MySQL分组取组内第一条数据


    代码实现–这种❌

    SELECT
    	* 
    FROM
    	cl_Issue_accessory 
    
    GROUP BY
    	type_id 
    ORDER BY
    	end_time DESC
    

    在这里插入图片描述

    select * from cl_Issue_accessory where type_id =2 ORDER BY end_time DESC
    

    检查一下时间排序:
    在这里插入图片描述
    真正的分组,取数据

    select t.* from (
        select * from cl_Issue_accessory cia order by cia.end_time desc  limit 1000
    ) t group by t.type_id
    	
    

    在这里插入图片描述

    展开全文
  • MySQL8.0 Java8建表语句: 数据准备: 随机生成姓名,依次插入模拟数据 自动生成项目地址 巧妙利用mysql的max、min函数,网上流传最多的是下面写法: 这样写有个弊端,limit限制了数据量,对以后的业务扩展都会有...

    MySQL分组排序



    前言

    业务场景:student_score是学生的分数表,其中包含id、学生、科目、创建时间、分数字段,现在我们需要进行平均分、最大分数、最小分数等不同纬度的统计。

    运行环境:
    MySQL8.0
    Java8


    一、前期准备

    建表语句:

    CREATE TABLE `student_score` (
      `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
      `student` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '学生姓名',
      `project` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '科目',
      `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `score` int DEFAULT NULL COMMENT '分数',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE KEY `student` (`student`,`project`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    

    数据准备:
    随机生成姓名,依次插入模拟数据
    自动生成项目地址


    二、统计

    1.平均分

    select group_concat(distinct student), avg(score) from student_score group by student
    

    在这里插入图片描述

    2.计算个人最低分

    select group_concat(distinct student), min(score) from student_score group by student
    

    该处使用的url网络请求的数据。

    3.计算个人最高分

    select group_concat(distinct student), max(score) from student_score group by student
    

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/d7d64621e0a84e64b9af0688bc0135aa.png


    总结

    巧妙利用mysql的max、min函数,网上流传最多的是下面写法:

    select * from (select * from student_score order by score desc limit 1000) a group by a.student
    

    这样写有个弊端,limit限制了数据量,对以后的业务扩展都会有影响

    max和min也有弊端:
    在这里插入图片描述
    如图project字段并不是正确的科目,需要根据业务来量身打造sql

    展开全文
  • mysql分组排序取每组第一条

    千次阅读 2021-07-29 12:05:56
    表 (5-8秒刷新次) 更新时间、采集点编号和最新读数 说明一下 表里面有很多点位数据 然后固定时间insert次 我需要拿到 最新时间的 所有点位的 数据 create table C010_CURRENT_DATA ( ID varchar(50) not ...
  • 乍一看没什么问题,但是看执行计划,会发现最外面一层的select没有走索引,而是全表扫描,这样随着数据量的增大,必将成为一个慢sql。...需要先根据创建时间倒排,再根据业务id分组,每个分组第一条数据。......
  • 比如每个班级成绩第一的学生等等 oracle 和 sqlserver支持函数,mysql不行 这里给一个粗暴的方法: 两个行数 GROUP_CONCAT(A ORDER BY B)和substring_index 思路: 1、GROUP_CONCAT(fA ORDER BY B) 按照...
  • mysql知识点实现排序分组
  • mysql中有一张表用户表user 其中李四是重复数据 id name 1 张三 2 李四 3 李四 4 王五 如何去重实现查询效果为 id name 1 张三 2 李四 4 王五 id为主键,去重之后保留id最小的一条数据 或者可以实现效果为 id name 1 ...
  • 一、需要实现分组排序并且组内状态优先级最高的数据有一张这样的数据表, 需求是根据error_type分组然后status最小的第一条数据第一种写法:select t.* from (select e.* from error_record e where e.status >...
  • 防止合并的构造对于派生表和视图引用是相同的: 1.聚合函数( SUM() , MIN() , MAX() , COUNT()等) 2.DISTINCT 3.GROUP BY 4.HAVING 5.LIMIT 6.UNION或UNION ALL 7.选择列表中的子查询 8.分配给用户变量 9.仅...
  • oracle和mysql分组排序取第一条数据

    千次阅读 2018-12-28 13:34:38
    查每个人的Orderstr 是1 的数据,并保证name不重复 oracle select *  from (SELECT a.*, row_number() over(partition by ida order by orderstr) rn  FROM (select orderstr, name, ida from test) a ) where.....
  • 如图,如果我们按 number 分组后再按 is_bak 从大到小排序获取最大的第一条数据,那么最后结果就是 id 为 1,4,6 这 3 。 select t.* from ( select distinct(id) as tt,t1.* from a_t as t1 order by is_bak ...
  • sql 排序 ROW_NUMBER() OVER 函数这是我之前写的sql排序函数,现在的需求是mysql 分组,组内排序并且取第一条数据。 mysql用子查询实现类似于row_number()函数的功能 场景: versionId=0时,是默认版本,即该记录...
  • Mysql 5.7 取分组第一条

    2022-07-24 18:33:08
    mysql 5.7 取分组第一条
  • 主要介绍了mysql使用GROUP BY分组实现前N记录的方法,结合实例形式较为详细的分析了mysql中GROUP BY分组的相关使用技巧,需要的朋友可以参考下
  • MySQL 8 引入了个rank()函数,可以更简便的实现排行的功能. 二、实例展示 具体使用: select t.company_id, t.quantity, RANK() OVER(PARTITION BY t.company_id ORDER BY create_ti...
  • 根据name分组根据,根据age排序取第一条数据 SELECT * FROM (SELECT p.*, row_number() over(PARTITION BY NAME ORDER BY age DESC ) rnk FROM person p)AS a WHERE rnk =1 AND a.name IN ('张三','鸡哥') ...
  • MySQL分组排序取第一或最后)

    千次阅读 2021-01-19 23:25:30
    MySQL分组排序(取第一或最后)方法一:速度非常慢,跑了30分钟SELECTcustid,apply_date,rejectruleFROM(SELECT*,IF( @pkey <> custid, @rank := 1, @rank := @rank + 1 ) AS rank,@pkey := custidFROM...
  • mysql
  • -- mysql分组排序取前N记录的最简洁的单sql。use test;drop table if exists test;create table test (id int primary key,cid int,author varchar(30)) engine=myisam;insert into test values(1,1,'test1'),(2...
  • mysql取分组第一条

    2021-04-06 11:09:16
    t_test按照p_id分组,并获取组内表最新创建的数据 SELECT a.name FROM ( SELECT * FROM t_test ORDER BY create_time desc LIMIT 10000) a ...== 这里注意:MYSQL5.7版本的子查询的排序需要加LIMIT排序才有效 ==
  • 前言: group by函数后到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一,该怎么实现呢? 本文提供两种实现方式。 一、准备数据 ...
  • mysql分组查询取第一条数据

    千次阅读 2021-04-14 10:31:12
    mysql分组查询取第一条数据 在做项目时遇到了,mysql分组查询取第一个的需求 表结构如下 需求是根据code分组,每组中版本号最大的数据 方案一 SELECT t.* FROM ( SELECT code, max( version ) AS version...
  • mysql分组取每组前几记录(排名) 附group by与order by的研究,需要的朋友可以参考下
  • mysql分组取每组前几记录&lpar;排序&rpar;首先来造部分数据,表mygoods为商品表,cat_id为分类id,goods_id为商品id,status为商品当前的状态位(1:有效,0:无效). CREATE TABLE `mygoods` ...mysql分组取每组...
  • 在处理个sql语句要求选择分组中最新的一条数据时,发现网上有一些mysql语句查询字段不在group by中,sql依然可以运行,在我本地运行后日志报错: Caused by: org.b3log.latke.repository.RepositoryException: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,351
精华内容 29,340
关键字:

mysql分组排序取第一条

mysql 订阅
友情链接: c-interpreter.tar.gz