zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    hadoop基础
    数据库基础知识
    sqoop基础
    大数据之常用linux常用命令
    zooKeeper基础
    impala基础
    Hbase基础
    Commitlint 提交规范类型
    理解JS闭包
    JS函数作用域及作用域链理解
  • 原文地址:https://www.cnblogs.com/matengfei123/p/10158639.html
Copyright © 2011-2022 走看看