`

子查询

SQL 
阅读更多

一、单子查询

        说明:单子查询只返回一行记录,但父查询可以返回多行。在where条件中可以使用预算符<,>,=,<=,>=,<>

eg:

select *  from emp where sal=(select min(sal) from emp)

 结果

结果为 写道

EMPNO  ENAME   JOB       MGR     HIREDATE        SAL       COMM    DEPTNO
---------- ---------- --------- ---------- --------------    ---------- ---------- ----------
7369      SMITH     CLERK 7902      17-12月-80   800                       20

 二:多行子查询

          说明:子查询可以返货多行记录,单where条件中必须使用多行运算符in,not in,exists,no exists,all,any.一般情况下,不能确认子查询返回多少条数据,用多行子查询比较安全

 

 in:where条件中必须在子查询中的某些记录也包含和它们相同的值。

 eg:

select * from emp where sal in (select sal from emp where deptno=20) order by deptno

 

     EMPNO ENAME      JOB              MGR       HIREDATE     SAL       COMM     DEPTNO
----------    ----------  ---------            ---------- -------------- ---------- ---------- ----------
      7369    SMITH      CLERK           7902 17-12月-80        800                      20
      7876    ADAMS      CLERK           7788 23-5月 -87        1100                    20
      7566    JONES      MANAGER         7839 02-4月 -81      2975                    20
      7788    SCOTT      ANALYST         7566 19-4月 -87        3000                    20
      7902     FORD       ANALYST         7566 03-12月-81        3000                    20

 

 not in:和 in 刚好相反  子查询中的记录必须不包含和他们相同的值。

eg:

select * from emp where sal  not in (select sal from emp where deptno=20) order by deptno
     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
    ---------- ---------- ---------        ---------- --------------    ---------- ---------- ----------
      7782 CLARK      MANAGER         7839 09-6月 -81      2450                    10
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7934 MILLER     CLERK           7782 23-1月 -82          1300                    10
      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81      1250        500         30
      7900 JAMES      CLERK           7698 03-12月-81           950                    30
      7844 TURNER     SALESMAN        7698 08-9月 -81      1500          0         30
      7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81         850                    30
9 rows selected.

          any:如果用=any的时候,作用与in相同

                 如果>any, 意思是 比里面子查询中最小的大

  SQL> select * from emp where sal  >any (select sal from emp where deptno=20) order by deptno;
     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7900 JAMES      CLERK           7698 03-12月-81            950                    30
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

13 rows selected.

 

      如果<any,意思是,比里面最大的小

  1* select * from emp where sal<any (select sal from emp where deptno=20) order by deptno
SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10
      7369 SMITH      CLERK           7902 17-12月-80            800                    20
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7900 JAMES      CLERK           7698 03-12月-81            950                    30
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

11 rows selected.

 

          all:如果=all的时候,作用也与in相同

                如果>all,意思是比里面子查询中最大的还大。

  1* select * from emp where sal>all (select sal from emp where deptno=20) order by deptno
SQL> /
 EMPNO ENAME   JOB        MGR       HIREDATE       SAL       COMM     DEPTNO
---------- ---------- -------     ---------- -------------- -    --------- ---------- ----------
 7839     KING    PRESIDENT            17-11月-81     5000                    10

 

                如果<all,意思是比里面子查询中最小的还小。

  select * from emp where sal<all (select sal from emp where deptno=20) order by deptno;
no rows selected

 

 

0
1
分享到:
评论

相关推荐

    sql子查询总结

    SQL 子查询总结 SQL 子查询是一种在 SQL 语言中嵌套在另一个查询的查询条件中的查询语句。子查询总是写在圆括号中,可以用在使用表达式的任何地方,如 Select、Insert、Update 或 Delete 语句或其他子查询中。 子...

    子查询是指一条SELECT语句作为另一条SELECT语句的一部分,外层的SELCT语句称为外部查询,内层的SELECT语句称为内部查询(或子查询)

    ### 子查询在SQL中的应用 #### 一、子查询定义及分类 子查询是SQL语言中一种重要的查询方式,它允许将一条SELECT语句作为另一条SELECT语句的一部分使用。这种结构化的设计使得数据库查询更为灵活和强大。具体而言...

    数据库实验报告 SQL查询 ,子查询组合

    【SQL查询与子查询组合】 SQL (Structured Query Language) 是用于管理和处理数据库的标准语言,而SQL Server 2000是Microsoft提供的一款关系型数据库管理系统。在这个实验中,你将学习如何使用SQL Server 2000的...

    子查询相关练习

    ### 子查询相关知识点 #### 一、子查询概述 子查询是指在一个SQL查询语句中包含另一个查询语句的情况。这种结构允许我们基于内层查询的结果来执行外层查询,从而实现更复杂的逻辑处理。例如,我们可以使用子查询来...

    数据库连接查询、子查询

    数据库连接查询和子查询 数据库连接查询和子查询是数据库查询语言中两个重要的概念。连接查询是指将两个或多个表连接起来,以便从多个表中检索数据。子查询是指在 WHERE 或 HAVING 子句中使用的SELECT语句。 连接...

    oracle中的子查询

    ### Oracle中的子查询详解 #### 一、子查询概述与应用场景 子查询是SQL语言中一项非常重要的功能,它允许我们在一个查询语句中嵌入另一个查询语句,以此来解决复杂的查询问题。子查询可以极大地提高SQL语言的灵活...

    使用In的子查询.rar

    在SQL查询中,`IN`子查询是一种非常实用的技术,它允许我们筛选出满足特定条件的记录,这些条件是基于另一个查询的结果。本教程将深入探讨`IN`子查询的概念、用途以及如何在实际数据库操作中有效利用它。 首先,...

    oracle笔记子查询

    oracle笔记子查询,有子查询相关的知识点笔记和具体的案例代码!

    mysql子查询的用法

    在本篇文章中,我们将深入探讨MySQL子查询的用法,包括单行子查询、多行子查询、关联子查询以及它们在实际应用中的示例。 1. 单行子查询 单行子查询返回单个值,常用于WHERE子句中与外部查询的字段进行比较。例如,...

    sql 子查询应用 含有实例说明

    SQL 子查询应用 SQL 子查询是 SQL 语言中一种强大的功能,可以用来解决复杂的查询问题。在本篇文章中,我们将讨论如何使用 SQL 子查询来解决一个实际问题,即计算银行账户的累计值。 在银行账户系统中,每笔交易都...

    Mybatis框架(子查询)

    Mybatis框架(子查询)

    SQL之分组统计和子查询专题

    SQL之分组统计和子查询专题 李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL...

    MS_SQL server 多表查询 子查询小总结

    ### MS_SQL Server 多表查询与子查询详解 #### 一、子查询概述 在 SQL 语言中,当一个查询语句被嵌套在另一个查询的查询条件之中时,我们称之为**子查询**(Subquery)。子查询总是被写在圆括号中,并且可以被用在...

    数据库的高级查询,子查询实例

    高级查询技术,特别是子查询,是数据库管理员和开发者必须掌握的重要技能。子查询,也被称为嵌套查询,允许在一个查询语句内部嵌套另一个查询,以实现更复杂的逻辑和数据分析。在本讨论中,我们将深入探讨子查询的...

    第22讲 SQL语言高级06--子查询.PPT

    在SQL语言中,子查询是解决复杂数据查询问题的关键工具,尤其在高级SQL应用中扮演着重要角色。本讲主要围绕子查询的概念、类型、使用方法以及子查询的语法进行详细讲解。 首先,子查询能够解决的问题主要有两类:一...

    数据库设计(包括select语句、子查询、语句嵌套)

    在本话题中,我们将探讨数据库设计的基础,特别关注SELECT语句、子查询以及语句嵌套这三个核心概念。 首先,数据库设计不仅仅是创建表格,更重要的是理解和分析业务需求,以构建一个能够支持高效数据存储、检索和...

    CriteriaType【_or、子查询】的使用.docx

    总结起来,普元EOS CriteriaType `_or` 结合子查询的使用,可以有效地处理复杂的数据查询需求,包括对多个条件的逻辑组合,以及通过子查询进行多表关联和数据筛选。这在处理大量数据和构建动态查询逻辑时具有很高的...

    -分组函数&子查询

    从给定的文件标题“分组函数&子查询”及其描述和部分内客中,我们可以提炼出关于SQL语言中分组函数(Group Functions)和子查询(Subqueries)的详细知识点。以下是对这些知识点的深入解析: ### 分组函数 #### 组...

    SQL子查询、内连接和外连接查询

    【SQL子查询、内连接和外连接查询】 在SQL中,子查询、内连接和外连接是进行复杂数据检索的关键工具。这些概念的理解和熟练应用对于数据库管理与数据分析至关重要。 **子查询** 是一个嵌套在其他SQL语句中的查询,...

Global site tag (gtag.js) - Google Analytics