exists 和not exists用法

exists 和not exists用法

exists表示()内子查询语句返回结果不为空说明where条件成立就会执行主sql语句,如果为空就表示where条件不成立,sql语句就不会执行。

not exists和exists相反,子查询语句结果为空,则表示where条件成立,执行sql语句。

dept,emp表中关联字段deptno,部门dept表有deptno为10,20,30,40 的部门id号,emp员工表中有员工信息及所在的部门deptno号,分别有属于10,20,30,40的部门ID号员工,共有14位员工。

案例一、

select * from emp e where exists (select 1 from dept t where t.deptno=10);
结果查询出所有员工信息14条记录,exits子查询中结果不为空,就会执行主sql语句,所以查询出emp所有记录。

案例二、
select * from emp e where exists (select 1 from dept t where t.deptno=10 and t.deptno=e.deptno);
结果查询出属于部门ip 10的所有员工信息,如果emp表中员工有属于20,30,40部门的通过exists子查询是为空的记录,主sql不查询。属于部门10的员工有记录,主sql执行。

案例三、
select * from emp e where not exists (select 1 from dept t where t.deptno=10);

结果记录为空,因为not exists子查询结果有值,不为空,则主sql不查询。

案例四、
select * from emp e where not exists (select 1 from dept t where t.deptno=10 and t.deptno=e.deptno);
结果查询出属于部门id不属于10的所有员工信息,emp表中员工有属于10部门的通过not exists子查询是不为空的记录,主sql不查询。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "EXISTS" 和 "NOT EXISTS" 是 SQL 中的布尔运算符,用于检查表中是否存在满足条件的行。 "EXISTS" 语句在查询中检查是否存在满足条件的行,如果存在则返回 "TRUE",否则返回 "FALSE"。 "NOT EXISTS" 语句与 "EXISTS" 相反,在查询中检查是否不存在满足条件的行,如果不存在则返回 "TRUE",否则返回 "FALSE"。 ### 回答2: exists和not exists分别是SQL中的两个关键字,用于判断一个表中是否存在满足某些条件的记录。 exists表示“存在”或“满足条件”,not exists则表示“不存在”或“不满足条件”。一般情况下,它们都配合着子查询使用。 例如,我们需要查询一个订单中是否存在来自某个用户的记录。我们可以使用如下语句: SELECT * FROM orders WHERE EXISTS (SELECT * FROM users WHERE orders.user_id = users.id AND users.name = 'Tom'); 该语句的意思是:查询orders表中是否存在用户Tom的订单记录。如果存在,就返回该记录。 其中,子查询的作用是筛选出符合条件的用户记录,然后与orders表中的相应记录进行匹配。如果匹配成功,就返回该记录。 另一个常见的用法是用not exists判断一个表中是否存在某些不符合条件的记录。例如,我们需要查询一个学生表中没有参加过数学比赛的学生。我们可以使用如下语句: SELECT * FROM students WHERE NOT EXISTS (SELECT * FROM competitions WHERE students.id = competitions.student_id AND competitions.subject = 'Math'); 该语句的意思是:查询students表中没有参加过数学比赛的学生记录。如果不存在这样的记录,就返回该记录。 其中,子查询的作用是筛选出参加过数学比赛的学生记录,然后与students表中的相应记录进行匹配。如果匹配不成功,就返回该记录。 总之,exists和not exists用法SQL语句中非常常见, 常用于查询、删除、更新等操作,可以方便地对表中的记录进行筛选和处理。 ### 回答3: exists和not existsSQL语言中的两个关键词,它们用于判断数据库中是否存在符合特定条件的数据记录。 exists用法是在子查询中使用,用于判断主查询中的每一条记录是否存在与子查询符合条件的数据记录。例如,如果需要查询所有已购买商品的顾客信息,则可以使用exists语句来判断顾客表中是否存在购买商品表中的记录。exists的基本语法如下: SELECT column1, column2, ... FROM table1 WHERE EXISTS (SELECT column1 FROM table2 WHERE condition); 子查询中通常只需要查询主查询中需要判断的字段,而不用返回所有字段。如果子查询返回结果为空,则主查询也不会选择该记录。 not exists则与exists用法相反,它判断主查询中的每一条记录是否不存在与子查询符合条件的数据记录。如果需要查询所有未购买商品的顾客信息,则可以使用not exists语句来判断顾客表中是否不存在购买商品表中的记录。not exists基本语法如下: SELECT column1, column2, ... FROM table1 WHERE NOT EXISTS (SELECT column1 FROM table2 WHERE condition); 与exists用法相同,子查询中也只需要查询主查询中需要判断的字段。如果子查询返回结果为空,则主查询会选择该记录。 总的来说,exists和not exists用法都可以作为条件语句使用,来从数据库中查询符合条件的记录。但是需要注意的是,使用exists和not exists时,要花费更多的时间来执行查询,因为需要对子查询中的所有记录进行循环和比较。因此,在编写SQL查询语句时,需要根据具体情况选择最适合的查询方式,以提高查询效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值