zoukankan      html  css  js  c++  java
  • 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

    不理解数据库的基础就会犯这种低级错误哈哈

  • 相关阅读:
    .net 日期格式化
    grunt 上手
    设计模式的认识
    顺时针打印矩阵
    WCF 框架运行时类图
    Python闭包详解
    软件用了那些技术
    zoj 1610 Count the Colors(线段树延迟更新)
    快速提高自己的技术的办法?有两个方法
    纯win32实现PNG图片透明窗体
  • 原文地址:https://www.cnblogs.com/Noctis/p/10497718.html
Copyright © 2011-2022 走看看