mysql 写sql的顺序:
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 和 ORDER BY一块儿使用时,ORDER BY要在GROUP BY的后面。
group by a,b,c 则a,b,c三个字段是按照先按a字段对数据行进行排序,再按b字段对那些字段a为同一个值的数据行进行排序,再再按c字段对那些字段a为同一个值且字段b为同一个值的数据行进行排序
order by a,b,c 也是如此
故而 表T 有a,b,c三个字段,按a分组再按c排序的方法以下: select * from T order by a,c//两个字段顺序不能颠倒 或者 select * from T group by a,c//两个字段顺序不能颠倒 ---------------------