最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
mysql数据库分组(GROUP BY)学习笔记
时间:2013-12-03 编辑:简简单单 来源:一聚教程网
每当查询数据库时,想知道有多少类,或想知道找不相同的有多少种,就用到了分组语句group by
使用方法:
代码如下 | 复制代码 |
SELECT * FROM `表名` group by `分组字段` |
或带limit做法
代码如下 | 复制代码 |
SELECT * |
例:(查询dedecms(织梦)程序的栏目标题表,以栏目id分组)
代码如下 | 复制代码 |
SELECT * |
关于mysql group by排序问题 .
类如 有一个 帖子的回复表,posts( id , tid , subject , message , dateline ) ,
id为 自动增长字段, tid为该回复的主题帖子的id(外键关联), subject 为回复标题, message 为回复内容, dateline 为回复时间,用UNIX 时间戳表示,
最简单的 :
代码如下 | 复制代码 |
|
也有网友利用自连接实现的 ,这样的效率应该比上面的子查询效率高,不过,为了简单明了,就只用这样一种了,GROUP BY没有排序功能,可能是mysql弱智的地方,也许是我还没有发现,
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数据库入门学习笔记 09-21
- mysql数据库入门教程之学习笔记 10-17
- mysql数据库基本操作学习笔记 04-08
- mysql数据库学习笔记 12-30
- MySQL登录、访问及退出操作解析 10-18
- sql语句 update字段null不能用is null问题解析 09-28