百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql数据库分组(GROUP BY)学习笔记
分享文章到:

mysql数据库分组(GROUP BY)学习笔记

发布时间:01/15 来源: 浏览: 关键词:
mysql分组命令是GROUP BY,下面我把在学习GROUP BY命令时笔记与大家分享,这里包括了GROUP BY简单用法与GROUP BY排序问题了。

每当查询数据库时,想知道有多少类,或想知道找不相同的有多少种,就用到了分组语句group by

使用方法:

 代码如下

SELECT * FROM `表名` group by `分组字段`

或带limit做法

 代码如下

SELECT *
FROM `数据表`
GROUP BY `分组的字段`
LIMIT 0 , 30

例:(查询dedecms(织梦)程序的栏目标题表,以栏目id分组)

 代码如下

SELECT *
FROM `dede_archives`
GROUP BY `typeid`
LIMIT 0 , 30

关于mysql group by排序问题 .

类如 有一个 帖子的回复表,posts( id , tid , subject , message ,  dateline ) ,

id为 自动增长字段, tid为该回复的主题帖子的id(外键关联),  subject 为回复标题, message 为回复内容, dateline 为回复时间,用UNIX 时间戳表示,


最简单的 :

 代码如下


SELECT * FROM (SELECT * FROM posts ORDER BY dateline DESC) GROUP BY  tid ORDER BY dateline DESC LIMIT 10

也有网友利用自连接实现的 ,这样的效率应该比上面的子查询效率高,不过,为了简单明了,就只用这样一种了,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

 

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有6人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板