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),这样比较清晰,还可以复用,修改起来也方便。

  • 相关阅读:
    (转)灵活运用 SQL SERVER FOR XML PATH
    Docker
    Springboot
    Redis
    Centos7.6在线安装mysql8.0.16
    Centos7.6安装jdk1.8
    Dubbo
    相关性检验
    逻辑回归和决策树上的一些区别
    postgresql 学习手册(客户端)
  • 原文地址:https://www.cnblogs.com/HuZihu/p/14454791.html
Copyright © 2011-2022 走看看