`
一笑_奈何
  • 浏览: 69140 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Mysql的取分组之后的每组的第一条数据

阅读更多
    最近在项目中遇到了一个问题就是营业员提成,但是营业员提成方式中有几个提成方式比较复杂就是按照子节点访问当前子节点的提成比率,如果当前节点的提成比率没有设置那么就访问上一级节点的提成比率,直到访问到根节点的提成比率。当时遇到这个我就怀恋Oracle了,因为Oracle里面恰恰有递归访问树形节点方法,但是现在用到mysql做数据库有什么办法了,所以还是要想办法去解决这个问题呀,经过我自己想和在网上找的资料终于解决这个问题。
  
       SELECT A.* FROM (
 select cs.SORT_ID , s.SORT_ID P_SORT_ID, s.CUT_RATIO from sort s 
     join sort cs WHERE cs.ID_PATH LIKE concat(s.ID_PATH,'%') AND cs.STATE_PATH not like '%0%' order by cs.SORT_ID, cs.NLEVEL DESC, s.SORT_ID DESC) A 
   WHERE A.CUT_RATIO != 0 GROUP BY A.SORT_ID LIMIT 0,1000000 
   

    这段sql主要意图是我现在里面把当前节点的所有对应的父节点找到然后进行排序,排序好了之后我在最外层排除提成比率为0的在进行分组,这样就能够得到每个分组下面的第一条数据。
    哈哈,挺简单的吧!
分享到:
评论

相关推荐

    mysql分组取每组前几条记录(排名) 附group by与order by的研究

    –按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...

    Mysql取分组后的每组第一条数据

    在MySQL中,当我们需要从分组后的数据中获取每组的第一条或特定顺序的数据时,标准的`GROUP BY`和`ORDER BY`语句并不能直接实现这个需求。这是因为`GROUP BY`语句会先对数据进行分组,然后在每个组内应用`ORDER BY`...

    mysql使用GROUP BY分组实现取前N条记录的方法

    GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 代码如下:SELECT a.id,a.SName,a.ClsNo...

    MySql分组后随机获取每组一条数据的操作

    在MySQL数据库中,有时我们需要对数据进行分组处理,并从每个分组中随机选取一条记录。这在统计分析或者抽样调查等场景中非常常见。本文将详细介绍如何在MySQL中实现这一操作,以及一些关于随机选取数据的优化方法。...

    mysql获取分组后每组的最大值实例详解

    在MySQL中,获取分组后每组的最大值是一项常见的数据分析任务,这通常涉及到聚合函数和分组查询。本文将详细讲解如何使用SQL语句来实现这个功能,通过一个具体的实例来帮助理解。 首先,我们创建了一个名为`test`的...

    基于mysql实现group by取各分组最新一条数据

    前言: group by函数后取到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一条,该怎么实现呢? 本文提供两种实现方式。 一、准备数据 ...

    关于MYSQL中每个用户取1条记录的三种写法(group by xxx)

    在MySQL中,有时候我们需要从一个表中为每个用户获取一条记录,这通常涉及到对数据进行分组并选择每个组中的特定记录。以下是对三种不同方法的详细解释,这些方法可以帮助你在MySQL中实现这一目标。 **1. 先排序后...

    Mysql利用group by分组排序

    首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@rowno := @rowno + 1) as rank, score, (C.end_ti

    MySQL 查询重复内容只显示一条

    3. **只显示一条重复内容**:若要保留重复数据中的某一条,可以选择其中的一个特定记录,比如按ID排序后的第一条或者最后一条。以下是一种方法,保留`id`最小的重复记录: ```sql SELECT t1.* FROM ( SELECT ...

    My SQL group by取同组第一条

    这里,我们使用窗口函数 `ROW_NUMBER()` 来为每个`MemberID`分组分配行号,然后在外部查询中选择`row_num = 1`的记录,这样就能得到每个分组的第一条记录。 除了上述方法,还可以考虑根据实际业务需求调整SQL语句,...

    MySQL获取所有分类的前N条记录

    在MySQL数据库中,获取每个分类的前N条记录是一个常见的查询需求,特别是在处理如文章、商品、用户等分组信息时。以下将详细介绍如何通过SQL语句实现这一功能,并给出三个示例。 首先,我们需要理解基本的SQL语法,...

    mysql第五章.pdf

    内连接仅包含满足连接条件的行,外连接则包括至少一侧满足条件的所有行,而交叉连接则是将一个表的每一行与另一个表的每一行进行组合。 5. 子查询:子查询是嵌套在SELECT、INSERT、UPDATE或DELETE语句中的查询。子...

    mysql获取group by总记录行数的方法

    这样,第一个查询将返回分组后的数据,第二个查询则给出所有数据的总数,包括分组前的原始记录数。 在实际应用中,如果你的查询涉及到多表连接和`GROUP BY`操作,可以像下面这样使用: ```sql SELECT SQL_CALC_...

    《MySql高级数据分析》期末测试.doc

    14. **定位第一条记录**:在SQL中,通常使用LIMIT 1来获取第一条记录。 15. **主键约束**:通过主键,可以确保关系中不会有重复的元组。 16. **DELETE语句**:DELETE FROM S WHERE 年龄>60会删除S表中所有年龄大于...

    MySQL第四阶段

    这种方式允许你一次性插入多条记录,每个值对用逗号分隔,每组值用括号包围。 - **方法二**:`INSERT INTO tb_name SET col_name=value,...` 这种方式更简洁,适用于插入单条记录,且可以使用子查询。 - **方法...

    获取MySQL的表中每个userid最后一条记录的方法

    在这个查询中,我们首先按`userid`对记录进行分组,然后使用`GROUP_CONCAT`函数将每个`userid`组内的`atime`字段按降序连接成一个字符串,结果是一个逗号分隔的时间戳列表。接着,`SUBSTRING_INDEX`函数用于提取这个...

    MySql培训日志_stu

    - **1.13.2 从第一条开始取两条数据** - `LIMIT 1, 2`从第2条开始取2条记录。 - **1.13.3 取得薪水最高的前5名** - `ORDER BY salary DESC LIMIT 5`获取薪水最高的前5名。 #### 十三、数据的增删改 - **1.14 ...

Global site tag (gtag.js) - Google Analytics