這是2個表
CREATE table dept(dept1 VARCHAR(6),dept_name VARCHAR(20)) default charset=utf8;INSERT into dept VALUES ('101','財務');INSERT into dept VALUES ('102','銷售');INSERT into dept VALUES ('103','IT技術');INSERT into dept VALUES ('104','行政');CREATE table emp (sid VARCHAR(6),name VARCHAR(20),age TINYINT(2),woektime_start VARCHAR(10),incoming SMALLINT(10),dept2 VARCHAR(6))default charset=utf8;insert into emp VALUES ('1789','張三',35,'1980/1/1',4000,'101');insert into emp VALUES ('1674','李四',32,'1983/4/1',3500,'101');insert into emp VALUES ('1776','王五',24,'1990/7/1',2000,'101');insert into emp VALUES ('1568','趙六',57,'1970/10/11',7500,'102');insert into emp VALUES ('1564','榮七',64,'1963/10/11',8500,'102');insert into emp VALUES ('1879','牛八',55,'1971/10/20',7300,'103');
這是問題
列出每個部門中收入最高的員工姓名,部門名稱,收入,并按照收入降序
這是做法
select name, dept_name, incoming from (select * from dept left join emp on dept.dept1=emp.dept2 order by incoming desc)s group by dept_name order by incoming desc;
我的疑惑在于,為什么不用max函式,通過子查詢就能查出來最大值??(我剛起步,所以問題對大佬們比較簡單,見諒哈
)希望大佬們能幫助我解惑
uj5u.com熱心網友回復:
是不是在查詢前面使用了 set rowcount 1 啊,類似這個效果呢?因為你上面的陳述句,貌似運行都會報錯哦!
uj5u.com熱心網友回復:
----select dept2,MAX( incoming)最高工資 from emp group by dept2 ---這句是找出每個部門最高工資和部門號,select e.* from emp e,
(select dept2,MAX( incoming)最高工資 from emp group by dept2) as M
where e.dept2=m.dept2 and e.incoming=m.最高工資 ----最高工資和部門能跟員工表的對應起,就是我們要找的那一條了
order by e.incoming desc
uj5u.com熱心網友回復:
沒有啊,直接得出了正確答案
uj5u.com熱心網友回復:

我執行你給的陳述句,不加任何聚合函式的情況下,拿到的應該是MIN聚合函式的效果,并不是MAX,MYSQL分組查詢有某種默認機制的
還是建議顯示指定除分組之外的列都為聚合,否則查出來結果有時候不匹配的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11439.html
標籤:疑難問題
