首先,這是不可能實現的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;