mysql获取按日期排序获取最新的记录
2014-01-25 14:58
429 查看
今天让一个数据查询难了。主要是对group by 理解的不够深入。才出现这样的情况
这种需求,我想很多人都遇到过。下面是我模拟我的内容表
我现在需要取出每个分类中最新的内容
select * from test group by category_id order by `date`
结果如下:
明显。这不是我想要的数据,原因是msyql已经的执行顺序是
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
这种需求,我想很多人都遇到过。下面是我模拟我的内容表
我现在需要取出每个分类中最新的内容
select * from test group by category_id order by `date`
结果如下:
明显。这不是我想要的数据,原因是msyql已经的执行顺序是
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获取按日期排序获取最新的记录
- mysql获取按日期排序获取最新的记录
- mysql获取按日期排序获取最新的记录
- mysql查询获取分组后最新的一条记录,策略:先排序,然后在次分组查询(默认第一条),就是最新的一条数据了
- mysql 获取最新若干条记录的sql语句
- 【Excle】在重复数据中对日期排序并查询最新的一条记录
- MySQL获取距离当前日期最近的记录
- 4000 mysql分组排序取最大、最小、最新、前N条记录
- [MySQL]学习笔记- 用户行为表中,查询每个人的一条最新行为(分组 排序 取时间最大的一条记录)
- mysql根据某个字段分组根据更新时间获取最新的记录
- mysql连接查询-主从表连接查询:获取从表最新一条表记录;获取没有从表记录的主表信息
- mysql 分组取最新的一条记录(整条记录)
- MySQL获取某月所有的日期点
- mysql中选择当前日期的记录
- Mysql中如何记录某个User创建的日期
- MySQL 获取当前日期及日期格式转换
- php + mysql 获取数据库中的记录(特别是高效的分页功能) 完全个人经验总结,仅供参考!
- mysql获取group by的总记录行数方法
- MYSQL日期获取(本月最后一天、本月第一天、下个月第一天、本月天数、一个月前那一天、当前时间与一个月前之间的天数)
- 关于SQL Server只查出日期最新记录