mysql聚合函数不存在的数据_SELECT子句中不存在聚合函数时的GROUP BY行为
我有一個emp具有以下結(jié)構(gòu)和數(shù)據(jù)的表:
name? ?dept? ? salary
-----? -----? ?-----
Jack? ?a? ? ? ?2
Jill? ?a? ? ? ?1
Tom? ? b? ? ? ?2
Fred? ?b? ? ? ?1
當(dāng)我執(zhí)行以下SQL:
SELECT * FROM emp GROUP BY dept
我得到以下結(jié)果:
name? ?dept? ? salary
-----? -----? ?-----
Jill? ?a? ? ? ?1
Fred? ?b? ? ? ?1
服務(wù)器是基于什么決定決定返回吉爾和弗雷德,并排除杰克和湯姆?
我在MySQL中運行此查詢。
注意1:我知道查詢本身沒有任何意義。我正在嘗試調(diào)試“ GROUP BY”方案的問題。我試圖了解用于此目的的默認(rèn)行為。
注2:我習(xí)慣于編寫與GROUP BY子句相同的SELECT子句(減去聚合字段)。當(dāng)我遇到上述行為時,我開始懷疑我是否可以在以下情況下依賴此行為:從emp表中選擇薪水在部門中最低/最高的行。例如:這樣的SQL語句可在MySQL上運行:
SELECT A.*, MIN(A.salary) AS min_salary FROM emp AS A GROUP BY A.dept
我找不到任何描述這種SQL為何起作用的材料,更重要的是,如果我能夠始終如一地依靠這種行為的話。如果這是可靠的行為,那么我可以避免類似以下的查詢:
SELECT A.* FROM emp AS A WHERE A.salary = (
SELECT MAX(B.salary) FROM emp B WHERE B.dept = A.dept)
總結(jié)
以上是生活随笔為你收集整理的mysql聚合函数不存在的数据_SELECT子句中不存在聚合函数时的GROUP BY行为的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多线程扫描_python实现
- 下一篇: python scrapy 环境搭建_p