这两天让一个数据查询难了。主要是对group by 理解的不够深入。才出现这样的情况
这种需求,我想很多人都遇到过。下面是我模拟我的内容表

我现在需要取出每个分类中最新的内容

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

结果如下

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

引用

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

所以在order by拿到的结果里已经是分组的完的最后结果。
由from到where的结果如下的内容。

到group by时就得到了根据category_id分出来的多个小组


到了select的时候,只从上面的每个组里取第一条信息结果会如下

即使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


再改进一下

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

子查询解决方案

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

mysql “group by ”与order by的研究--分类中最新的内容相关推荐

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

    这两天让一个数据查询难了.主要是对group by 理解的不够深入.才出现这样的情况  这种需求,我想很多人都遇到过.下面是我模拟我的内容表 复制代码代码如下: CREATE TABLE `test` ...

  2. mysql group by日期_深入研究mysql中group by与order by取分类最新时间内容

    鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里,(不知道是不是现在水平的限制,总之我还没找到在用 ContentProvider时可以使用子查询),主要方法是用SQL ...

  3. mysql 取分组中最新记录

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

  4. mysql group by having count_mysql中count(), group by, order by使用详解

    最近做IM的时候遇到一个问题,同时用到了这三个关键字.就是查询一个人的离线消息详情,我们服务端返回给客户端显示的这个详情包括了三个内容,第一个要求列出离线这段时间哪些人或者群给你发了消息,第二个这其中 ...

  5. mysql分页查询limit_MySQL查询语句(where,group by,having,order by,limit)

    Ⅰ where语句 -- 条件语句 where -- 条件判断 查询id值大于3,且小于5的记录 -- 字段>3 and 字段< 5; mysql 查询id值大于等于3,且小于等于5的记录 ...

  6. mysql group where_[MySQL] 测试where group by order by的索引问题

    1. select * from test  where a=xx group by b order by c   如何加索引 CREATE TABLE `index_test` ( `id` int ...

  7. mysql group和order_mysql 用 group by 和 order by同时使用

    首先,这是不可能实现的 mysql的查询的顺序 select -> from-> where->group by->having->order by. 但mysql的解析 ...

  8. mysql的limit、order by和group by的用法

    程序执行会重复 用mysql很长时间,limit是分页的一个好工具, select * from table_a where num = 4 limit 1,10, select * from tab ...

  9. mysql 索引使用测试(group by、order by)

    mysql 索引使用测试(group by.order by) ************************** 测试表 字段:id.name.age.distance 插入10万条数据 drop ...

最新文章

  1. 图解TCP/UDP原理!秒懂!
  2. 采用串口DMA双缓冲方法,快速更新外部FLASH中文字库
  3. 信息学奥赛一本通 1151:素数个数
  4. pyspider all 只启动了_我是如何让微博绿洲的启动速度提升30%的(二)
  5. 移动端网页开发注意点
  6. 下拉选择框 其他_WPS表格下拉菜单的多种做法(一)
  7. 上海大华条码称代码_上海大华条码秤使用说明书
  8. gg修改器修改内购_【教程】手把手教你修改微信性别为空
  9. npm install 报错 this command with --force, or --legacy-peer-deps
  10. 使用IDA对ipa进行反编译
  11. 2012年8月版:Oracle数据库技术更新…
  12. Openstack 网络模块
  13. GitHub压缩包下载URL
  14. 公司注册地址要注意,小心被拉“黑”,征信受影响
  15. React.js学习(一):设计并实现一个“任务清单列表”
  16. 微信小程序和uniapp开发工具
  17. Install Mercury MW150US WIFI dongle on RPi
  18. Win10修改编辑hosts文件无法保存怎么办
  19. webbench源码阅读
  20. 无限级分类的原理(递归方法)

热门文章

  1. JavaScript获取iframe中form表单中元素的值
  2. 《区块链原理、设计与应用》一3.3 征信和权属管理
  3. Puppet 4 性能提升超2倍,升级前应该你知悉的变化
  4. 使用pt-online-schema-change 修复主从数据表数据不一致
  5. beangle commons 4.0.0 release
  6. 网站 java php_做网站用java还是php
  7. Docker 容器技术 — Swarm 集群
  8. 5G 标准 — R18
  9. 5G NGC — SMF 会话管理功能
  10. IAR编译提示could not open file lnkstm8s003f3.icf