zoukankan      html  css  js  c++  java
  • SQL---子查询(subquery)

    子查询,是指在查询语句中嵌套查询语句。(这里指的是普通子查询,而非关联子查询)

    以下是子查询出现的几种形式:

    1,在WHERE子句中的子查询

    这种是最常见的普通子查询。如果子查询返回的结果只有1个,那么就称为标量子查询。例如:

    SELECT *
    FROM sales_agents
    WHERE agency_fee > 
    (SELECT AVG(agency_fee)
     FROM sales_agents);

    如果子查询返回的结果不止1个,那么可以用ALL,ANY关键字,或者用IN,NOT IN,EXISTS,NOT EXISTS关键字进行筛选。例如:

    SELECT AVG(agency_fee)
    FROM sales_agents
    WHERE id NOT IN (SELECT id
                     FROM managers)
    SELECT project_id
    FROM project 
    GROUP BY project_id
    HAVING COUNT(employee_id) >= ALL(SELECT COUNT(employee_id) FROM project GROUP BY project_id)

    2,在SELECT子句中的子查询

    主要用于填充列。

    SELECT 
         name,
         price,
         (SELECT AVG(price) FROM paintings) AS avg_price
    FROM paintings

    需要注意的是,必须给在SELECT子句中的子查询取别名。

    3,在FROM子句中的子查询

    也就是把子查询的结果当成一张表,然后在这张新表的基础上再进行后续操作。例如:

    SELECT budget
    FROM department,
         (SELECT max(budget) as val
          FROM department) AS max_budget
    WHERE department.budget = max_budget.val

    在这种情况下,更好的做法是把子查询做成一个视图(view),这样比较清晰,还可以复用,修改起来也方便。

  • 相关阅读:
    android滤镜效果
    Android ListView的OnItemClickListener详解
    Categories
    利用Stack倒序List,利用Set使List不能添加重复元素
    IOS数据类型对应输出格式
    win7的dropbox无法启动 重新安装也没用
    记一次datatable的删除操作
    winform动态创建radio以及使用委托判断哪个选中
    临时表列的长度
    退出winform应用程序
  • 原文地址:https://www.cnblogs.com/HuZihu/p/14454791.html
Copyright © 2011-2022 走看看