`

EXISTS AND NOT EXISTS

阅读更多
EXISTS或者NOT EXISTS是把主查询的字段传到后边的查询中作为条件,返回值是TRUE或者FALSE。EXISTS TRUE,那么就是查询条件成立,结果会显示出来。NOT EXISTS TRUE,则为FALSE,查询连接条件不成立。
select * from course where not exists(select * from grade where grade.课程代号=course.课程代号)     
这个语句,是查询course表中课程代号在grade中没有出现的数据。
看看grade表,课程编号有K01到K06,而COURSE表,有K01到K07,那么K07在GRADE表是不存在的,那么,是符合条件的。
同样select * from course where exists(select * from grade where grade.课程代号=course.课程代号) 
则是查询COURSE的记录条件为编号在GRADE中存在。那么很明显,结果是K01到K06的数据。
另外,EXISTS和NOT EXISTS的作用可以用IN或NOT IN实现,但是,效率要高。
因为EXISTS和NOT EXISTS返回的结果是TRUE或者FALSE,那么则在子查询中,遇到第一个符合条件的结果,就会退出查询,而不会进行全表的检索。而NOT IN或者IN,要把子查询中的SELECT字句全部查询出来才行。
分享到:
评论

相关推荐

    sql case when exists not exists in not in

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

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

    SQL 中 IN、EXISTS、NOT IN、NOT EXISTS 的区别 IN、EXISTS、NOT IN、NOT EXISTS 是 SQL 中四种常用的条件判断运算符,它们之间的区别主要体现在使用场景、执行效率和语法结构上。 IN IN 是一种条件判断运算符,...

    exists SQL用法详解、exists和not exists的常用示例

    SELECT * FROM c t1 WHERE NOT EXISTS (SELECT * FROM c WHERE id = t1.id AND c_date > t1.c_date) ``` 这个查询用来找出每个`id`下`c_date`最新的记录。`NOT EXISTS`在这里的作用是,对于每个`t1.id`,如果子查询...

    NOT EXISTS ⇔ NOT IN ⇒ NOT NULL 问题 结果不一样 疑问 如果等效

    AND NOT EXISTS ( SELECT 'X' FROM aa WHERE bb.smi_cd = smi_cd ); ``` 这里表示从表 `A1` 中选择所有列,但排除那些 `smi_cd` 为 `NULL` 的记录,同时还要排除那些在表 `aa` 中有相同 `smi_cd` 的记录。 ### ...

    sqlserver exists,not exists的用法

    在SQL Server中,`EXISTS` 和 `NOT EXISTS` 是两个非常重要的子查询操作符,它们用于检查子查询是否返回任何行。理解这两个操作符的用法对于编写高效的查询至关重要。 1. `EXISTS` 操作符: `EXISTS` 用于测试子...

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

    SELECT * FROM employees WHERE NOT EXISTS (SELECT 1 FROM departments WHERE departments.id = employees.department_id AND city = 'New York'); ``` 通常,如果需要排除某些条件,使用 `NOT EXISTS` 会比 `NOT ...

    oracle数据库关于exists使用

    - **内层Exists**: `NOT EXISTS(SELECT * FROM sc WHERE cno = course.cno AND sno = student.sno)` 检查是否有学生没有选修某门课程。这里的关键是,对于每一个 `course` 和 `student` 的组合,如果找不到相应的...

    SQL中exists的用法[借鉴].pdf

    `SELECT Id, Name, Class, Count, Date FROM table t WHERE NOT EXISTS (SELECT Id, Name, Class, Count, Date FROM table WHERE Id = t.Id AND Date > t.Date)` 在上面的示例中,NOT EXISTS 子句用于判断某个记录...

    sql server2005 exists使用方法

    AND EXISTS ( SELECT * FROM third_table WHERE third_table.another_id = another_table.id ) ); ``` 这个例子展示了如何使用嵌套的 `EXISTS` 子句来检查多个表之间是否存在满足特定条件的记录。 #### 三...

    mssql和sqlite中关于if not exists 的写法

    在sql语名中,if not exists 即如果不存在... 代码如下:if not exists (select * from sysobjects where id = object_id(‘table_name’) and OBJECTPROPERTY(id, ‘IsUserTable’) = 1) c,判断列不存在 代码如下:if

    详解SQL EXISTS 运算符

    理解`EXISTS`和`NOT EXISTS`的用法对于优化SQL查询非常重要,因为它们通常比使用`IN`或`JOIN`操作符更有效率,特别是在处理大量数据时。`EXISTS`主要关注记录是否存在,而不需要返回具体的值,这使得它在处理复杂...

    关于in and inner/outer join and exists

    它通常与 NOT EXISTS 结合使用,用于优化查询性能。 ```sql SELECT * FROM table1 WHERE EXISTS (SELECT 1 FROM table2 WHERE table1.common_column = table2.common_column); ``` 这将返回`table1`中存在与`...

    exists的使用(查询选择了所有课程的学生信息)归纳.pdf

    NOT EXISTS 语句用于判断课程是否存在于选修记录中,如果不存在,则输出当前学生的结果。 理解这个查询的关键是理解 EXISTS 语句的工作机制。EXISTS 语句会先执行主查询,然后将结果代入子查询中,如果子查询返回...

    sql添加表列字段描述添加默认值删除字段

    if not exists( select * from syscolumns where syscolumns.[name]='FNewObjectEnd' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[jsc_financial]') and OBJECTPROPERTY(id, N...

    if exists 判断对象是否存在

    IF EXISTS (SELECT * FROM sys.objects WHERE name = N'[表名]' AND type = 'U') BEGIN DROP TABLE [表名]; END; ``` 在这个例子中,`sys.objects` 视图包含了所有用户定义的对象信息,如表、视图等。`type = 'U'`...

    MySQL exists 和in 详解及区别

    `NOT EXISTS`是`EXISTS`的否定形式,它会在子查询找不到匹配的行时返回`TRUE`。这常用于排除某些记录。 例如: ```sql SELECT pub_name FROM publishers WHERE NOT EXISTS ( SELECT * FROM titles WHERE pub_id =...

    MYSQL IN 与 EXISTS 的优化示例介绍

    SELECT SQL_NO_CACHE * FROM rocky_member m WHERE EXISTS (SELECT 1 FROM rocky_vip_appro a WHERE m.ID = a.user_id AND a.passed = 1); ``` 这个查询的执行时间为0.313秒。 2. 使用 `IN`: ```sql SELECT ...

Global site tag (gtag.js) - Google Analytics