暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql 用 group by 和 order by同时使用

原创 加菲猫 2022-07-27
2628

首先,这是不可能实现的

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;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论