mysql中GROUP BY 和ORDER BY 组合使用注意事项
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-24 22:29:30 浏览: 评论:0
今天在做一个微信的在线客服系统的时候,东西需要从一个表中调最近的用户,但是这个表是一个消息记录表结构如下,例子:
- ID uid content weid addtime
- 1 2 3213123 12 …..
- 2 3 3213123 12 ….
- 3 2 321312 12 …
- 3 1 xxx 12 3232
我们的需求是从消息表中掉出来最近的用户,刚开始的时候用的是这样写的,代码如下:
- SELECT f . *
- FROM `enet_wechat_message` AS m
- LEFT JOIN `enet_wechatfans` AS f ON m.fakeid = f.openid
- AND m.weid =135
- AND f.weid =135
- WHERE f.fakeid IS NOT NULL
- GROUP BY m.fakeid
- ORDER BY m.id DESC
- LIMIT 10
但是这些写完之后发现不是我想要的结果,通过查资料发现MYSQL的执行顺序是如下代码:
from… where…group by… having…. select … order by…
这样我最后的ORDER BY 是在GROUP BUY 之后才进行的排序所以数据不是我想要的,采用如下方法可以解决,代码如下:
- SELECT *
- FROM (
- SELECT *
- FROM `enet_wechat_message`
- WHERE weid =135
- ORDER BY `id` DESC
- ) `temp` www.phpfensi.com
- GROUP BY fakeid
- ORDER BY `id` DESC
LIMIT 10使用子查询,先对结果集进行排序,然后在进行分组,这样就可以实现我需要最新的几个用户了,当然这个代码的业务逻辑还需要用户的个人信息,所以我最终的代码是如下的:
- SELECT f . *
- FROM (
- SELECT *
- FROM (
- SELECT *
- FROM `enet_wechat_message`
- WHERE weid =135
- ORDER BY `id` DESC
- ) `temp`
- GROUP BY fakeid
- ORDER BY `id` DESC
- LIMIT 10 www.phpfensi.com
- ) AS m
- LEFT JOIN `enet_wechatfans` AS f ON m.fakeid = f.openid
- WHERE f.fakeid IS NOT NULL
- GROUP BY m.fakeid
- ORDER BY m.id DESC
Tags: GROUP ORDER组合使用
相关文章
- ·mysql GROUP BY 与 ORDER BY数据排序问题(2014-09-24)
- ·mysql关联查询中GROUP BY的例子(2014-09-24)
- ·MYSQL中group by做分组查询并排序(2014-09-25)
- ·解决MySQL中无GROUP BY直接HAVING的问题(2014-09-27)
- ·mysql数据库分组,GROUP BY,查询实例(2014-09-27)
- ·mysql函数group_concat使用方法(2014-10-01)
- ·mysql中group by用法与having合用注意事项(2014-10-02)
- ·MySql中GROUP_CONCAT()函数使用详解(2014-10-03)
- ·mysql 分组group by排序取每条记录中,时间最大的一条记录(2014-10-03)
- ·mysql获取group by的总记录行数方法(2014-10-03)
- ·mysql group by 排序问题一些自我理解(2014-10-04)
- ·mysql中distinct和group by过滤删除重复行(2014-10-04)
- ·mysql group_concat函数使用方法(2014-10-08)
- ·解决mysql group by不能排序方法(2014-10-08)
- ·mysql having和group by 语句用法(2014-10-14)
- ·MySql中GROUP_CONCAT函数把多条数据显示成一条数据(2014-10-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)