码迷,mamicode.com
首页 > 数据库 > 详细

mysql 用 group by 和 order by同时使用

时间:2018-12-21 20:19:42      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:HERE   bst   order   join   substr   having   group by   index   substring   

首先,这是不可能实现的

mysql的查询的顺序

select -> from-> where->group by->having->order by.

但mysql的解析器执行顺序:

from-> where->group by->having->select->order by.

所以,从执行的流程来看,是先group by 然后在 order by.
order by拿到的结果里已经是group by以后的结果.

因此,order by的字段必须是group by 里面已经存在的字段.

如果有人问到,想group by同时,进行排序

注意,查询 按照索引进行排序

用 group_concat进行排序

SELECT
pq.id,SUBSTRING_INDEX( group_concat( pq.paperId ORDER BY pq.id),‘,‘,1
) AS paperId,SUBSTRING_INDEX(group_concat( pq.questionType ORDER BY pq.id),‘,‘,
1
) AS questionType,pq.questionId,p.id as pId,p.type,
SUBSTRING_INDEX( group_concat( p.type ORDER BY pq.id),‘,‘,1
) AS pType
FROM
paper_question as `pq` left join `question` as `p` on `pq`.`questionId` = `p`.`id`
WHERE
pq.paperId = 470 GROUP BY pq.paperId;

mysql 用 group by 和 order by同时使用

标签:HERE   bst   order   join   substr   having   group by   index   substring   

原文地址:https://www.cnblogs.com/matengfei123/p/10158639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!