1. 程式人生 > 其它 >Mysql使用中group by分組異常

Mysql使用中group by分組異常

今天使用group by對資料進行分組查詢,然後發現一個問題

SELECT 
	deptno AS '部門編號', 
	COUNT(empno) AS '人數',
FROM emp,
WHERE temp.deptno = emp.`deptno`
GROUP BY '部門編號'

這樣的查詢結果是錯誤的,這樣的結果等價於不進行分組,這是為什麼呢,我找了好些資料,如果這是發生在標準的SQL裡是非常正常的,這是因為在標準的SQL裡,是有執行順序的

  1. FROM...
  2. WHERE...
  3. GROUP BY...
  4. 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
···