如題:
查詢每個部門最低工資的雇員信息
1 查詢每個部門的最低工資
select deptno, min(sal) min_sal from emp group by deptno;
2 同最低工資關聯人員信息<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:sql;">select e.* from emp e, (select deptno, min(sal) min_sal from emp group by deptno) s
where e.deptno = s.deptno
and e.sal = s.min_sal;
in關鍵字是這種場景容易想到的一個方法,先查詢出部門的最低工資,然後匹配最低工資的雇員信息。
select * from emp where sal in (select min(sal) from emp group by deptno);
in 方法存在一個問題,當兩部門中有多個相同的工資值時會產生錯誤的結果
現在講emp 中empno 為 1234 的用戶部門修改為 20
update emp set deptno = 20 where empno = 1234;
這時,empno 為 1234 的員工工資與deptno為10的部門最低工資相同,所以使用in查詢就查出了這個最低工資。
但是使用 關聯子查詢 的方法查詢,
綜上比較,在類似的查詢中,慎用in 關鍵字直接查詢,而要使用關聯子查詢按部就班的來查。