mysql 用 group by 和 order by同时使用
2024-08-24 21:18:12
首先,这是不可能实现的
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;
最新文章
- BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]
- ssh设置
- RMAN备份与恢复之初入茅庐
- 初级文法课程-第1课:名词的种类/名词的数/名词的所有格/冠词;be 动词、一般动词的现在式
- shared_ptr 线程安全
- mysql 存储过程,搞死人的语法
- 启动本地Oracle
- Hello Dojo!(翻译)
- Node.js log4js日志记录
- 【计算几何初步-判断是否凸多边形】【HDU2108】Shape of HDU
- VARIANT类型
- InnoDB引擎Myslq数据库数据恢复
- 项目中用到的Java注解
- EmitMapper 和TinyMapper 两者简单对比
- 关于ajax的与后台Controller的交互 后台拿不到值
- Django web编程3 -- 创建用户账户
- pyspider爬虫框架
- Solve Error: node postinstall sh: node: command not found
- Mock.js常用占位符——Basic、Date、Color
- MySQL定时器