mysql 子查询 as_mysql子查询
更多關于LeetCode習題總結請翻閱我的博客:
LeetCode - mysql子查詢【184. 部門工資最高的員工】
子查詢
一、按查詢結果分類:
1.作為數據源使用;
2.作為選擇條件使用;
二、按常見的子查詢分類:
1.由比較運算符引發的子查詢;
2.由 [NOT] IN 引發的子查詢: LeetCode題184部門工資最高的員工
3.INSERT ...SELECT....:插入檢索的數據
題184. 部門工資最高的員工
思路:1.先在employee表中,分組查找出每個部門分數最高的員工。2.再與department表內鏈接
1.分組查找出每個部門分數最高的員工
SELECT e2.DepartmentId,MAX(e2.Salary) AS Salary FROM Employee e2
GROUP BY e2.DepartmentId
輸出結果為:
我們若再添加Name列,可以發現:工資最高的員工并非是一一對應的,而是會取分組前的第一行。
即若想通過Group By求最大值的其他信息,這樣子的方式是不允許的。
SELECT e2.DepartmentId,e2.Name,MAX(e2.Salary) AS Salary FROM Employee e2
GROUP BY e2.DepartmentId
2. employee表與department表內鏈接:
SELECT d.Name AS Department,e1.Name AS Employee,e1.Salary
FROM Employee e1 INNER JOIN Department d
ON e1.DepartmentId = d.Id
3.將上述代碼通過子查詢合并
SELECT d.Name AS Department,e1.Name AS Employee,e1.Salary
FROM Employee e1 INNER JOIN Department d
ON e1.DepartmentId = d.Id
WHERE (e1.DepartmentId,e1.Salary)
IN (SELECT e2.DepartmentId,MAX(e2.Salary) AS Salary FROM Employee e2
GROUP BY e2.DepartmentId );
總結
以上是生活随笔為你收集整理的mysql 子查询 as_mysql子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米迄今最好屏!小米笔记本Pro用上4K
- 下一篇: php怎么添加验证码,PHP添加验证码以