查询思路:

很多时候想在使用group by时想查询group by的每一组中的第N条数据,而取这些数据时往往按如下方式去执行则很慢

SELECT  *  FROM  test main  WHERE  (SELECT COUNT(1)   FROM test sub   WHERE      main.uid = sub.uid     AND main.gid > sub.gid  ) < 3;

按如上方式,对于数据10000左右的表就已经很吃不消。

或已拼接结构的方式

SELECT t.a,t.b
,substring_index( group_concat( IFNULL(t.c,0)ORDER BY t.itime DESC ), ",", 3 ) c
,substring_index( group_concat( t.itime ORDER BY t.itime DESC ),",", 3) time  
FROM t t GROUP BY t.a ,t.b;

等等这些单存对sql来说并不是想要的方案,效率太慢,

如下,是借用mysql的set变量来处理,10w的数据效率还不错,就贴出来了。

在如下结果集中

标记好的结果

sql语句(为取其中的某一类型)

set @rowNO = 0;-- 定义序列变量
set @codeTemp = '';-- 定义每组区别变量
select * from (
select
i.* ,-- 字段值
if(@codeTemp=stockCode,@rowNO := @rowNo+1,@rowNO := 0) AS rowno,-- 赋值序列
@codeTemp:=stockCode as stockCode1 -- 赋值区别
from (
select i.stockCode,i.endDate,i.JingLiRun from income_statements i WHERE i.endDate like '%-12-31' order by stockCode,i.endDate desc -- 可自定义的临时表数据
) i
) i where i.rowno = 1 -- 取每组第N条

如有更好的欢迎分享

mysql-利润set变量模拟分组查询每组中的第N条数据的更多相关文章

  1. [MySQL]MySQL数据库中如何查询分组后每组中的最后一条记录?

    原文地址:https://codedefault.com/s/how-can-i-retrieve-the-last-record-in-each-group-mysql 问题描述 比如,在MySQL ...

  2. MySQL全面瓦解10:分组查询和聚合函数

    概述 相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位):或者不同年龄段的化妆品消费占比是多少(这可能有助于对商品备货量的预估). ...

  3. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  4. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  5. sql 查询某个条件多条数据中最新的一条数据或最老的一条数据

    sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...

  6. sql-实现select取行号、分组后在分组内排序、每个分组中的前n条数据

    表结构设计: 实现select取行号 sql局部变量的2种方式 set @name='cm3333f'; select @id:=1; 区别:set 可以用=号赋值,而select 不行,必须使用:= ...

  7. laravel如何从mysql数据库中随机抽取n条数据

    laravel如何从mysql数据库中随机抽取n条数据 一.总结 一句话总结: inRandomOrder():$userQuestions=UserQuestion::where($map)-> ...

  8. MySQL之集合函数与分组查询

    这是分组查询用到的语句,也包括了排序以及常用的集合函数

  9. MySQL分组查询每组最新的一条数据(通俗易懂)

    开发中经常会遇到,分组查询最新数据的问题,比如下面这张表(查询每个地址最新的一条记录): sql如下: -- ---------------------------- -- Table structu ...

随机推荐

  1. sqlmap小白操作

    转载地儿:http://blog.csdn.net/zgyulongfei/article/details/41017493 对于网络安全人员来说,掌握渗透工具的使用方法是一项必备的技能.然而,一个没 ...

  2. 转:设置Eclipse中的tab键为4个空格的完整方法

    from: https://my.oschina.net/xunxun10/blog/110074   设置Eclipse中的tab键为4个空格的完整方法 收藏 XunXun10 发表于 4年前 阅读 ...

  3. bzoj1067 降雨量&&vijos1265 暴风雨

    描述 话说这日,李逍遥与阿奴正欲前往桃花源拿寿葫芦,突然电闪雷鸣,天降暴雨,弄得两人措手不及,只得到附近的树洞避雨. "哎,大理不是本应旱灾的吗?怎么会突降暴雨呢?"李逍遥嘀咕道. ...

  4. javascript删除元素节点

    1.删除元素父节点 function removeElement(_element){ var _parentElement = _element.parentNode; if(_parentElem ...

  5. javascript时间的一些问题

    1.求当前时间. var curDate = new Date(); 2.求当前时间的前一天 var preDate = new Date(curDate.getTime()-24*60*60*100 ...

  6. NLog 通过http保存日志

    from:https://github.com/NLog/NLog/wiki/WebService-target Example config: <nlog throwExceptions='t ...

  7. Linux 信号详解二(信号分类,信号处理,kill)

    信号分类 信号分为可靠信号和不可靠信号 不可靠信号的缺点 ①:处理完信号,需要重新再注册信号:②信号可能丢失. Linux已经对缺点①做了优化,现在的不可靠问题主要指的是信号可能丢失 信号还可以分为实 ...

  8. warning: #870-D: invalid multibyte character sequence

    warning: #870-D: invalid multibyte character sequence2011-03-12 9:18warning: #870-D: invalid multiby ...

  9. 让Apache Shiro保护你的应用

    在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方 ...

  10. lecture13-BP算法的讨论和置信网

    这是HInton课程第13课,这一课有两篇论文可以作为课外读物<Connectionist learning of belief networks>和<The wake-sleep ...