`
wangheid
  • 浏览: 36923 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

深入研究mysql中group by与order by取分类最新时间内容

 
阅读更多

本文就和大家一起深入研究下mysql中group by与order by.下面是我模拟我的内容表
18036385852010610231710593
我现在需要取出每个分类中最新的内容

select * from test group by category_id order by `date`

结果如下
18036385852010610231710593
明显。这不是我想要的数据,原因是msyql已经的执行顺序是

引用

写的顺序:select ... from... where.... group by... having... order by..
执行顺序:from... where...group by... having.... select ... order by...

所以在order by拿到的结果里已经是分组的完的最后结果。
由from到where的结果如下的内容。
18036385852010610231710593
到group by时就得到了根据category_id分出来的多个小组
18036385852010610231710593
18036385852010610231710593
到了select的时候,只从上面的每个组里取第一条信息结果会如下
18036385852010610231710593
即使order by也只是从上面的结果里进行排序。并不是每个分类的最新信息。
回到我的目的上 --分类中最新的信息
根据上面的分析,group by到select时只取到分组里的第一条信息。有两个解决方法

1,where+group by(对小组进行排序)
2,从form返回的数据下手脚(即用子查询)
由where+group by的解决方法
对group by里的小组进行排序的函数我只查到group_concat()可以进行排序,但group_concat的作用是将小组里的字段里的值进行串联起来。

select group_concat(id order by `date` desc) from `test` group by category_id

18036385852010610231710593
再改进一下

select * from `test` where id in(select SUBSTRING_INDEX(group_concat(id order by `date` desc),',',1) from `test` group by category_id ) order by `date` desc

18036385852010610231710593
子查询解决方案

select * from (select * from `test` order by `date` desc) `temp`  group by category_id order by `date` desc

18036385852010610231710593

分享到:
评论

相关推荐

    深度分析mysql GROUP BY 与 ORDER BY

    本文就和大家一起深入研究下mysql中group by与order by.下面是我模拟我的内容表   我现在需要取出每个分类中最新的内容 select * from test group by category_id order by `date` 结果如下   明显。这不是我想...

    MySQL数据库中group by语句与update语句的用法研究.pdf

    本论文对 MySQL 数据库中的 group by 语句和 update 语句进行了深入研究,讨论了这些语句在数据库查询和修改中的应用,并给出了具体的解决方案。 一、MySQL 数据库中 group by 语句的用法 Group by 语句的作用是对...

    mysql "group by"与"order by"的研究--分类中最新的内容

    本文将深入探讨这两个子句的功能以及如何在MySQL中正确使用它们来获取分类中的最新内容。 首先,`GROUP BY` 子句用于对数据进行分组,根据指定的一个或多个列将具有相同值的行聚集在一起。在这个例子中,`SELECT * ...

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

    总的来说,`GROUP BY`和`ORDER BY`是MySQL中进行数据分析和报表生成的重要工具,它们能够帮助我们有效地处理分组和排序的需求。在处理大数据集时,理解并灵活运用这些语句可以显著提高查询效率。

    淘宝分类数据mysql

    这可能涉及到复杂的SQL查询、聚合函数(如`COUNT`, `SUM`, `AVG`等)、分组(`GROUP BY`)和排序(`ORDER BY`)操作。 7. **数据库优化**:在处理大量数据时,数据库性能至关重要。这可能涉及到索引优化、查询优化...

    网易技术部MySQL资料总结.pdf

    在描述中提到文档具有很高的参考价值,这是基于该文档对MySQL数据库的深入研究,能够为开发者和数据库管理员提供实用的知识和技巧。 标签为“MySQL”,意味着文档聚焦于MySQL数据库系统的相关知识,可能包含了MySQL...

    MySQL性能调优与架构设

    以上内容涵盖了MySQL性能调优与架构设计的核心要点,实际应用中还需要结合具体业务场景进行深入研究和实践。通过这些知识,你可以有效地提升MySQL数据库的运行效率,保障系统的稳定性和高性能。

    Mysql开发与实践源代码

    在“Mysql开发与实践源代码”中,我们可以深入理解MySQL的使用、设计和优化。这本书的源代码涵盖了书中所有章节的关键示例和练习,这对于学习者来说是一份宝贵的资源。以下是基于这个主题的详细知识点讲解: 1. **...

    MYSQL中文手册完全版

    这份"MYSQL中文手册完全版"为学习和理解MySQL提供了详尽的资源,适合初学者以及需要深入研究的开发者。 MySQL的基本概念包括: 1. 数据库(Database):存储数据的容器,可以比喻为一个图书馆。 2. 表(Table):...

    MySQL中文手册chm

    2. **SQL查询**:熟练掌握SELECT语句的用法,包括投影(SELECT)、选择(WHERE)、分组(GROUP BY)、排序(ORDER BY)和连接(JOIN)等。 3. **事务处理**:了解ACID(原子性、一致性、隔离性和持久性)原则,学习...

    梦境解梦mysql数据

    标题中的“梦境解梦mysql数据”表明这是一份与MySQL数据库相关的数据集,可能是某个梦境研究项目或应用的数据库备份。这份数据集包含了超过9000条记录,涵盖了日常梦境的各种情况,对于分析梦境、建立梦境数据库或者...

    Mysql官方示例employees数据库employees_mysql.zip

    2. **SQL查询**:实践如何使用SELECT语句进行数据检索,包括JOIN操作来合并多个表的数据,WHERE子句进行条件筛选,GROUP BY和HAVING子句进行数据分组,以及ORDER BY和LIMIT子句进行排序和限制结果集。 3. **数据库...

    MySQL数据库教程-源程序文件

    在MySQL中,还有许多高级特性值得深入研究,如视图(View)、存储过程(Stored Procedure)、触发器(Trigger)、事务(Transaction)等。视图可以提供一个定制化的查询结果集,方便管理和使用;存储过程是一组预...

    MySQL数据库基础实例教程(第2版)(微课版)-教学课件.zip

    第五章 数据查询:深入研究复杂的SQL查询技术,如子查询、聚合函数、排序(ORDER BY)、分页(LIMIT)等。此外,还会涉及连接操作的优化,如使用索引来提升查询性能。 第六章 数据视图:讲解视图的概念,如何创建和...

    计算机软件-编程源码-MYSQL中文手册完全版.zip

    JOIN操作用于连接多表查询,GROUP BY和HAVING用于分组和过滤,ORDER BY和LIMIT实现排序和限制结果数量。 六、索引与优化 索引提高查询效率,常见的有主键索引(唯一且不为空)、唯一索引(唯一但可为空)、普通索引...

    mysql测试数据(test_db-master)

    1. **学习SQL**:开发者可以利用这个数据库练习编写SQL查询,理解如何进行JOIN、WHERE、GROUP BY、ORDER BY等操作。 2. **性能测试**:通过大量数据,可以评估不同查询优化策略对MySQL服务器性能的影响,测试索引、...

    数据库系统及原理及MYSQL应用教程多表连接和子查询实验报告

    实验报告主要涵盖了数据库系统的基本操作,特别是MySQL中的分组查询、多表连接和子查询的运用。以下是对这些知识点的详细解释: 1. **GROUP BY 语句与聚合函数**: GROUP BY 语句用于将数据分组,通常与聚合函数如...

    MySql基础知识总结

    SELECT语句用于从表中获取信息,可以通过WHERE子句进行条件过滤,GROUP BY用于分组,HAVING对分组结果进行过滤,ORDER BY进行排序,LIMIT用于限制返回的记录数。例如,查找所有年龄大于20岁的学生: ```sql SELECT *...

Global site tag (gtag.js) - Google Analytics