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以后的結果.
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//兩個字段順序不能顛倒
---------------------
表T 有a,b,c三個字段,按a分組再按c排序的方法如下:
select * from T order by a,c//兩個字段順序不能顛倒
或者
select * from T group by a,c//兩個字段順序不能顛倒
---------------------