`

MySQL分组后排序的问题(转)

阅读更多

 

文章出自:http://zhidao.baidu.com/link?url=UTDXhHcfizHWM6tRar48i41_zwqVmF19iFiBhwQzGl7Ct2qlilPAzZlgl9KqFbAMolwvxnrQFh8UHXbQZcAT1q

 

 

假如表里面存放了每个商品不同日期的不同价格

product price   date

1111    10.00   2007-07-01

2222    21.00   2007-07-01

2222    22.00   2007-07-02

1111    11.00   2007-07-02

3333    1.00   2007-07-01

我现在需要对商品分组后选择最后日期的那条记录

结果应该是

2222    22.00   2007-07-02

1111    11.00   2007-07-02

3333    1.00    2007-07-01

 

请问这个SQL怎么写?数据量较大,所以还要以性能优先

 

语句如下:

-- 用分组函数来做,假如你的表名是table_name

select A.*
from table_name A,(select product,max(date) max_date from table_name group by product) B
where A.product=B.product and A.date=B.max_date;

 

 

 

 

 

 

分享到:
评论

相关推荐

    MySQL分组排序功能

    ### MySQL分组排序功能 #### 知识点概述 MySQL是一种广泛使用的开源关系数据库系统,因其性能稳定、易于管理等特点而受到开发者的喜爱。但在某些高级查询方面,MySQL相较于其他数据库(如Oracle)存在一定的局限性...

    MySQL之聚合查询、分组和排序

    ### MySQL之聚合查询、分组和排序 #### 聚合查询、分组与排序概述 聚合查询、分组和排序是关系型数据库系统中重要的数据处理方式之一,尤其是在MySQL这样的流行数据库管理系统中更是如此。这些操作可以帮助用户从...

    05mysql分组函数

    这是我自己学习mysql时的学习笔记,每一个知识点都是自己动手写的,涵盖了mysql中的几乎全部的基础知识点,查询,子查询,分组,排序,常用函数,多表连接,视图,变量,存储过程,函数,分支结构,循环结构等等

    MySQL优化篇:排序分组优化.pdf

    为了解决这个问题,MySQL 4.1之后引入了单路排序,这种算法一次磁盘扫描就可以获取所有需要的列,减少了I/O操作,但可能会因为排序空间不足而导致性能问题。因此,在实际优化中,还需考虑sort_buffer的大小,以确保...

    Mysql利用group by分组排序

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

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

    这是因为`GROUP BY`语句会先对数据进行分组,然后在每个组内应用`ORDER BY`,但结果只会返回每个组的第一个出现的记录,而不是根据排序后的第一条记录。 解决这个问题的一种方法是通过创建一个已排序的临时表,然后...

    详解MySQL分组排序求Top N

    MySQL分组排序求Top N是数据库查询中一种常见的需求,特别是在数据分析、报表生成或数据挖掘等场景中。本文将深入探讨这一主题,帮助你理解如何在MySQL中有效地实现这一功能。 首先,我们要明白分组(GROUP BY)和...

    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分组后随机获取每组一条数据的操作

    2. 将随机排序后的数据按班级分组: ```sql GROUP BY a.class ``` 组合起来,完整的SQL查询语句如下: ```sql SELECT * FROM ( SELECT * FROM xdx_test ORDER BY RAND() ) a GROUP BY a.class ``` 执行这个...

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

    mysql获取分组后每组的最大值实例详解 1. 测试数据库表如下: create table test ( `id` int not null auto_increment, `name` varchar(20) not null default '', `score` int not null default 0, primary key...

    03查询(mysql入门之排序查询)select

    这是我自己学习mysql时的学习笔记,每一个知识点都是自己动手写的,涵盖了mysql中的几乎全部的基础知识点,查询,子查询,分组,排序,常用函数,多表连接,视图,变量,存储过程,函数,分支结构,循环结构等等

    MySql实现分组取n条最大记录.txt

    在MySQL中实现分组并获取每组中的特定数量的最大记录是一项常见的需求,尤其是在处理大量数据时。例如,在上述示例中,我们希望基于`resid`进行分组,并且对于每个组,我们要找出前两条具有最高`pscore`和次高的`...

    06mysql分组查询

    这是我自己学习mysql时的学习笔记,每一个知识点都是自己动手写的,涵盖了mysql中的几乎全部的基础知识点,查询,子查询,分组,排序,常用函数,多表连接,视图,变量,存储过程,函数,分支结构,循环结构等等

    分组排序选择需要一条

    sql 排序:row_number() over(partition by sjjl_id order by fksj desc,最优化的情况,里面放的有例子,大家可以参考

    MySQL进阶二 排序窗口函数和聚合窗口函数

    MySQL是世界上最流行的关系型数据库管理系统之一,其...因此,无论你是数据库管理员、数据分析师还是软件开发人员,深入理解和熟练运用MySQL的排序窗口函数和聚合窗口函数都将极大地提高你的工作效率和解决问题的能力。

    分组并排序取前N

    标题“分组并排序取前N”涉及到数据库查询中的一个重要概念,这通常指的是在SQL查询中使用`GROUP BY`、`ORDER BY`以及`LIMIT`子句来对数据进行分组、排序,并提取出每组中排名靠前的N条记录。在数据库管理中,这种...

    mysql行转列(将同一列下的不同内容的几行数据,转换成几列显示)、列转行、行列汇总、合并显示

    MySQL 行转列、列转行、行列汇总、合并显示 MySQL 行转列是一种常用的数据处理操作,用于将同一列下的不同内容的几行数据转换成几列显示。例如,我们有一个成绩表 tb_score,其中包含 userid、subject 和 score 三...

Global site tag (gtag.js) - Google Analytics