mysql 用 group by 和 order by同時使用


首先,這是不可能實現的

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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM