mysql 用 group by 和 order by同时使用

首先,这是不可能实现的mysql

mysql的查询的顺序sql

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

但mysql的解析器执行顺序:索引

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

因此,从执行的流程来看,是先group by 而后在 order by.
order by拿到的结果里已是group by之后的结果.select

所以,order by的字段必须是group by 里面已经存在的字段.查询

若是有人问到,想group by同时,进行排序vi

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

用 group_concat进行排序join

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 pTypeFROM paper_question as `pq` left join `question` as `p` on `pq`.`questionId` = `p`.`id`WHERE pq.paperId = 470 GROUP BY pq.paperId;

相关文章
相关标签/搜索