簡體   English   中英

從外部主查詢中獲取 MYSQL 子查詢中的字段

[英]Get field from MYSQL subquery from outer main query

在我的 mysql 數據庫中,我有一個員工表 ( EMP ) 和一個部門表 ( DEPT ),並希望找到每個部門中薪水最高的員工

所以首先我像這樣對部門進行分組

SELECT
    dept.DNAME as department,
    MAX(emp.SAL) as maximum_sal
FROM
    `EMP` emp
    JOIN `DEPT` dept ON emp.DEPTNO = dept.DEPTNO
GROUP BY
    dept.DNAME
ORDER BY
    maximum_sal DESC;

分組的數據庫結果

現在為了讓與這些部門相關聯的員工,我嘗試這樣做:

SELECT
    emp.ENAME,
 emp.SAL,
    department
FROM
    `EMP` emp
WHERE
    (department, maximum_sal) IN (
        SELECT
            dept.DNAME as department,
            MAX(emp.SAL) as maximum_sal
        FROM
            `EMP` emp
            JOIN `DEPT` dept ON emp.DEPTNO = dept.DEPTNO
        GROUP BY
            dept.DNAME
        ORDER BY
            maximum_sal DESC
    );

但我Unknown column 'department' in 'field list'

我究竟做錯了什么? 如何從內部子查詢中獲取字段以顯示在我的選擇外部查詢中。

無論 MySQL 版本如何,您都可以這樣做:

SELECT emp.ENAME,
       emp.SAL,
       dept.dname
FROM `EMP` emp
JOIN `DEPT` dept ON emp.DEPTNO = dept.DEPTNO
JOIN
(
  SELECT DEPTNO, max(sal) as msal
  FROM emp
  GROUP BY DEPTNO
) tmp ON tmp.DEPTNO = emp.DEPTNO 
     AND tmp.msal = emp.sal
GROUP BY dept.DNAME

SQLFiddle 演示

您的查詢將不起作用,因為您的“子查詢”只是您無法從外部引用的 IN 子句的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM