sql關聯查詢—將一個表的查詢結果作為新表進行查詢操作


例題:#  各個部門中 最高工資中最低的那個部門的 最低工資是多少?

先考慮取得各個部門最高工資

SELECT MAX(salary) AS max_salary,e.`department_id`  did
        FROM employees e
        GROUP BY e.`department_id`

結果為:

再將此表命名tmp在進行查詢

SELECT MIN(max_salary),did
FROM
(SELECT MAX(salary) AS max_salary,e.`department_id`  did
        FROM employees e
        GROUP BY e.`department_id`)AS tmp

此時結果卻為:

由此可見查詢之后的表結構數據之間並無關系

因此應該使用其中的單列數據

解法一:

ELECT MIN(e2.salary)
FROM employees e2
WHERE e2.department_id =
    (SELECT e1.department_id
    FROM employees e1
    GROUP BY e1.department_id
    HAVING MAX(e1.salary) =
        (SELECT MIN(tmp.max_salary) AS min_salary
        FROM(
            SELECT MAX(salary) AS max_salary,e.`department_id`  did
            FROM employees e
            GROUP BY e.`department_id`
            )AS tmp
    )
)

或者將此表與主表進行關聯查詢

解法二:

SELECT e1.salary
FROM employees e1,
(SELECT MAX(salary) AS max_salary,e.`department_id`  did
        FROM employees e
        GROUP BY e.`department_id`
        ORDER BY max_salary
        LIMIT 0,1
)AS temp
WHERE e1.department_id = temp.did

不理解數據庫的基礎就會犯這種低級錯誤哈哈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM