如下图, 计划实现 :按照 parent_code 分组, 取组中code最大值所在的整条记录,如红色部分。(类似hive中: row_number() over(partition by))

select c.* from
( select a.*, (@i := case when @key_i=parent_code then @i+1 else 1 end) as sort_num,(@key_i:=parent_code) as tmp
from my_test a, (SELECT @i := 0,@key_i:='') b
order by parent_code,code desc) c
where c.sort_num=1;

个人理解, mysql 运行顺序:  from >>  where >> order by >> select .

以下部门应该有助于理解mysql中变量的概念。

1.=========================================================================================================

仅按照code排序,加序号sort_num效果如下:

select (@i := @i + 1) as sort_num, a.*
from my_test a, (SELECT @i := 0) b
order by code;

2.=========================================================================================================

仅按parent_code分组,按照code排序,加序号.

select a.*, (@i := case when @key_i=parent_code then @i + 1 else 1 end) as sort_num,(@key_i:=parent_code) as tmp
from my_test a, (SELECT @i := 0,@key_i:='') b
order by parent_code,code desc;

参考链接 :https://blog.csdn.net/zzhhoubin/article/details/79839610

https://www.cnblogs.com/CharlieLau/p/6737243.html

https://blog.csdn.net/u011728683/article/details/78594070

mysql分组排序取最大值所在行,类似hive中row_number() over partition by的更多相关文章

  1. mysql 分组排序取最值

    查各个用户下单最早的一条记录 查各个用户下单最早的前两条记录 查各个用户第二次下单的记录 一.建表填数据: SET NAMES utf8mb4; -- 取消外键约束 ; -- ------------ ...

  2. hive内group by取第一条数据,Hive中row_number的使用

    1.hive的分组和组内排序---语法 语法: row_number() over (partition by 字段a order by 计算项b desc ) rank rank是排序的别名 par ...

  3. MySQL分组排序(取第一或最后)

    MySQL分组排序(取第一或最后) 方法一:速度非常慢,跑了30分钟 SELECT custid, apply_date, rejectrule FROM ( SELECT *, IF ( , ) A ...

  4. [转] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit

    前言:        同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来.        oracle里面可以通过row_number() OVER (PARTITIO ...

  5. SQL数据分组后取最大值或者取前几个值(依照某一列排序)

    今日做项目的时候,项目中遇到须要将数据分组后,分组中的最大值,想了想,不知道怎么做.于是网上查了查,最终找到了思路,经过比較这个查询时眼下用时最快的,事实上还有别的方法,可是我认为我们仅仅掌握最快的方 ...

  6. mySql分组排序

    mysql 排序学习---mysql 1.建表语句 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varc ...

  7. mysql 分组排序前n + 长表转宽表

    MySQL数据库优化的八种方式(经典必看) 建表 CREATE TABLE if not EXISTS `bb` ( `id` int not null primary key auto_increm ...

  8. SQL之分组排序取top n

    转自:http://blog.csdn.net/wguangliang/article/details/50167283 要求:按照课程分组,查找每个课程最高的两个成绩. 数据文件如下: 第一列no为 ...

  9. 关于oracle分组排序取值的问题

    按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FE ...

随机推荐

  1. 【LOJ#6278】数列分块2

    题目大意:分块维护一个有 n 个数字的序列,有两种操作:区间加,区间查询小于某个数的元素个数.n <= 50000 预处理阶段:处理出块内元素的相对大小顺序(排序),时间复杂度为 \(O(nlo ...

  2. ztree删除某个节点下的全部子节点后,父节点图标还是文件夹

    <script type="text/javascript"> //删除节点 zTree.removeNode(treeNode); //获取删除节点的父节点 var ...

  3. MySQL5.5登录密码忘记了,怎嘛办?

    1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld --skip-grant-    tables回车.如果没有出现提示信息,那就对了. 4.再开一 ...

  4. python写GUI

    图形用户界面 本文利用wxpython wx包中的方法都是以大写的字幕开头 import wx def load(event): file = open(filename.GetValue()) co ...

  5. JAVA-大白话探索JVM-类加载器(一)

    JVM??? Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实现这一特点的关键.JVM是Java Virtual Machine(Java虚拟机)的缩写,Java程序编译后 ...

  6. ObservableData-另一种姿势的观察者模式

    使用 数据的定义 public class TestModel { private static TestModel mInstance; public static TestModel GetIns ...

  7. Nginx实现数据库端口转发

    前言 因开发.测试.生成等服务器网络策略问题,导致部分服务器A需要访问数据库而无法正常访问数据库,此处采用端口代理方式解决此问题,即通过一台能正常访问数据库的服务器B做tcp端口代理,实现服务器A通过 ...

  8. ubuntu新建组合用户命令不管用

    当我们新建了组和用户的时候发现一些命令不管用了,这是什么问题呢. 一.解决方案. 通过以下命令添加组和用户,切换到新用户,发现命令不管用,只有一个$符号. groupadd 新组名 ----添加组 u ...

  9. SQL——Hibernate SQL增删改查

    1.查询list数据 实例:user login public String userLogin(){ Session session = HibernateSessionFactory.getSes ...

  10. asp.net mvc url应用

    //url加密与解密string res1 = HttpUtility.UrlEncode("7Z2K5Lgk/iI="); //值是7Z2K5Lgk%2fiI%3d string ...