`

exists()和in()的应用

 
阅读更多

1.应用

 

例:

  emp表:

Address Number
bj 40
bj 30
fj 20
fj 10

 

  dept表:

Bearing Adds
NO bj
SO

fj

 

(1) exists()的应用

 select sum(Number) from emp
 where exists(
         select * from dept  where Bearing = 'SO'
       )

 

输出的结果是: 100

 

    结果好像不符合。但答案是正确的,因为:exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真 ,否则返回假。not exists则相反。

 

    exists做为where 条件时,是先对where 前的主查询进行查询,然后用主查询的结果代入exists的查询进行判断 ,如果为真则输出当前主查询的结果 ,否则不输出。

 

    not exists以exists相反。

 

(2) in的应用

select sum(Number) from emp
where Address in(
     select Adds from dept where Bearing = 'SO'
)
 

输出的结果是: 30

 

  in是用来判断某个字段包含的值。允许在where字句中有多个值。

  not in 是不包含的值。

 

语法:

select * from 表1 where 字段1 in (val,val,.....)

 

 

select * from emp
where adds not in(
   select Adds from dept where Bearing = 'SO'
);

select * from emp
where not exists(
    select Adds from dept
     where Bearing ='SO' and emp.Address = dept.Adds
)

 

2.效率

  in和exists的效率值不是绝对的。

 

   in适合于外表大内表小的          

 select * from emp where deptid in (select id from dept)
转化为:
  select * from emp ,(select distinct id from dept) dept
   where emp .deptid = dept.id;
 

 

  exists适合于外表小内表大的

select * from emp where exists(select id from dept where dept.id = emp.deptid )
转化为:
  for deptid in (select * from emp )
  loop
    if (exists(select id from dept where  id = emp.deptid )
    then
      OUTPUT THE RECORD!
    end if
  end loop
 

 

 

分享到:
评论

相关推荐

    oracle中exists_和in的效率问题详解

    Oracle 中 EXISTS 和 IN 的效率问题详解 EXISTS 和 IN 都是 Oracle 中的集合操作符,但它们在使用和执行效率上有所不同。本文将深入探讨 EXISTS 和 IN 的使用场景、执行机制和效率问题。 EXISTS 的使用场景和机制 ...

    SQL里的EXISTS与IN

    在SQL查询语言中,`EXISTS` 和 `IN` 子句都是非常常用且重要的操作符,它们被广泛应用于复杂的查询条件中,特别是当需要检查某个子查询是否返回结果时。根据给定的信息,本文将详细解析`EXISTS`与`IN`的区别以及如何...

    sql in,exists,not in,not exists区别

    在实际应用中,IN 和 EXISTS 的效率可能会有所不同。IN 适合用于内外表数据量都很大的情况,而 EXISTS 适合用于外表数据量小的情况。 例如,在一个有百万级数据的表中,使用 IN 可能会导致性能问题,而使用 EXISTS ...

    sql case when exists not exists in not in

    在SQL查询中,`CASE WHEN`、`EXISTS`、`NOT EXISTS`以及`IN`和`NOT IN`是常用的操作符,它们用于处理复杂的条件判断和数据筛选。这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `...

    经典SQL查询总结关于Exists,not Exists.in ,not in效率的说明。

    - 在某些情况下,可以考虑使用 `EXISTS` 或 `NOT EXISTS` 来替代 `IN` 和 `NOT IN`,以提高查询效率。 #### 三、左连接、右连接与全连接 除了上述几种查询方式之外,SQL 还提供了不同的连接类型来处理不同情况下...

    sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

    EXISTS和NOT EXISTS的应用 在查询中,我们可以使用EXISTS和NOT EXISTS来代替IN和NOT IN。例如,我们要查询Sendorder表中的冗余数据(没有和reg_person或worksite相连的数据): ```sql select Sendorder.id, ...

    in和exists性能解析

    在实际应用中,选择`IN`还是`EXISTS`应基于对数据特性和查询需求的深入了解。对于小的结果集和简单的查询条件,`IN`可能是更直观的选择。但在处理大数据量和复杂的查询逻辑时,`EXISTS`通常能提供更佳的性能表现。...

    “exists”和“in”的效率问题

    在数据库查询语言SQL中,“Exists”与“In”是两种常用的子查询方法,它们在实际应用中各有优势与局限。本文将深入探讨这两种方法的工作原理、应用场景以及性能差异,帮助读者更好地理解和选择合适的查询方式。 ###...

    sql exists和not exists用法

    这是因为`IN`和`NOT IN`需要将主查询中的每一行都与子查询结果进行比较,而`EXISTS`和`NOT EXISTS`则只需判断子查询是否返回至少一行数据即可,无需获取所有数据行。 **性能对比:** - **IN 和 NOT IN**:需要将主...

    QL中exists 与 in_的比较

    在数据库查询语言QL中,`exists`与`in_`(通常写作`IN`)是两种常见的用于子查询的语法结构,它们各自有着独特的应用场景和性能表现。理解这两种语法的区别对于优化查询效率至关重要。 ### `exists`与`in_`的基本...

    EXISTS_和_NOT_EXISTS

    - 效率:在某些情况下,`EXISTS` 和 `NOT EXISTS` 可能会提供相似的性能,但通常 `IN` 和 `NOT IN` 比较操作符在处理大量数据时更有效。然而,当涉及到子查询时,`EXISTS` 和 `NOT EXISTS` 可能更合适,因为它们只...

    SQL中EXISTS与IN

    ### SQL中EXISTS与IN的区别及应用场景 #### EXISTS详解 **定义与原理** - **基本概念**:`EXISTS` 是 SQL 中的一个谓词,用于判断子查询是否有结果返回,而不是关心具体的返回值。它主要关注子查询是否至少有一行...

    PostgreSQL IN vs EXISTS vs ANYALL vs JOIN性能分析

    在应用目标上,以pgbench_accounts和pgbench_branches为例,我们可以通过四种不同的方式编写查询语句:使用IN子句、使用ANY子句、使用EXISTS子句和使用INNER JOIN。每种方式都有其特点和适用场景。例如,当需要判断...

    Oracle In和exists not in和not exists的比较分析

    在Oracle数据库中,`IN`、`EXISTS`、`NOT IN` 和 `NOT EXISTS` 是四个常用的子查询操作符,它们在SQL查询语句中扮演着不同的角色,且各有其性能特点。以下是对这些操作符的详细分析和比较。 1. `IN` 操作符: `IN` ...

    oracle数据库关于exists使用

    ### Oracle数据库中Exists与In的使用详解 #### 一、Exists 的使用方法 在Oracle数据库中,`EXISTS` 是一种...了解两者的工作原理及其优缺点,可以帮助我们在实际应用中做出更合适的选择,从而提高查询效率和性能。

    SQL复习-EXISTS谓词

    本文将深入探讨EXISTS谓词的工作原理、用法以及其与IN和JOIN操作符的区别。 一、EXISTS谓词的基本概念 EXISTS谓词用于测试一个子查询是否至少返回一行数据,而不是关心返回的具体数据内容。其基本语法结构如下: ...

    mysql多表查询和EXISTS查询性能对比

    ### MySQL多表查询和EXISTS查询性能对比 #### 测试环境 在进行MySQL多表查询与EXISTS查询的性能对比之前,首先需要了解测试环境的相关配置。虽然原文中并未给出具体的测试环境细节,但在实际操作中,这一步骤至关...

    搞懂mysql的exists

    在理解`EXISTS`的使用时,我们需要深入探讨其工作原理、优缺点以及与其他查询操作(如`IN`、`JOIN`)的对比。 一、`EXISTS`的基本用法 `EXISTS`子句通常与子查询一起使用,形式如下: ```sql SELECT column1, ...

    Oracle: minus | in | exists

    在Oracle数据库中,`MINUS`、`IN` 和 `EXISTS` 是三种不同的SQL查询操作符,它们各自用于特定的数据处理场景。了解并熟练掌握这些操作符对于优化查询性能和编写复杂的SQL语句至关重要。 1. **MINUS 操作符** `MINUS...

    sql server2005 exists使用方法

    在这个例子中,我们首先定义了一个虚拟的 `contains` 操作,然后将其转换为 `NOT EXISTS` 和 `EXCEPT` 的组合。这种转换可以帮助理解多层嵌套 `EXISTS` 的逻辑,并可能提供更高效的实现方式。 #### 四、注意事项 ...

Global site tag (gtag.js) - Google Analytics