Mysql使用中group by分組異常
阿新 • • 發佈:2022-03-31
今天使用group by
對資料進行分組查詢,然後發現一個問題
SELECT
deptno AS '部門編號',
COUNT(empno) AS '人數',
FROM emp,
WHERE temp.deptno = emp.`deptno`
GROUP BY '部門編號'
這樣的查詢結果是錯誤的,這樣的結果等價於不進行分組,這是為什麼呢,我找了好些資料,如果這是發生在標準的SQL裡是非常正常的,這是因為在標準的SQL裡,是有執行順序的
- FROM...
- WHERE...
- GROUP BY...
- SELECT...
按照執行順序,在執行到GROUP BY
的時候,還沒有執行到SELECT語句,所以就獲取不到AS的別名,因此分組失敗!
但是這裡是mysql,mysql是支援group by使用別名分組的,但是為什麼不行呢,我測試了一下,當別名為英文時,即只是用英文字母作為別名,不使用單引號包圍,這樣的話是可以成功分組的,但是一旦使用單引號包圍的別名就會導致分組失敗
也就是說這樣使可以分組成功的,但是為了保險起見,順便遵循標準的SQL語法,group by後面還是儘量不要使用別名!
SELECT
deptno AS asdf,
COUNT(empno) AS '人數',
FROM emp
WHERE temp.deptno = emp.`deptno`
GROUP BY asdf
···