mysql中exists的用法简答

前言

在日常开发中,用mysql进行查询的时候,有一个比较少见的关键词exists,我们今天来学习了解一下这个
exists这个sql关键词的用法,这样在工作中遇到一些特定的业务场景就可以有更加多样化的解决方案

语法解释

语法

SELECT * FROM A WHERE EXISTS (SELECT * FROM B where B.id=10 and A.id=B.id);

语法讲解(运行)

  • 首先执行外部语句SELECT * FROM A 的查询,将查询的结果带入子查询中进行遍历判断是否在最终结果中显示

  • 如外部查询到10条数据,(A的id顺序为1-10),进行遍历首先将A.id为1的数据进行带入子查询中进行判断,显然子查询中无法查询到此条数据,此时子查询对第一条数据返回false,那么最终结果就不会显示此条数据,依次到9都是同样的结果,直到A.id等于10的时候,如果B的数据中有id=10的数据此时返回true,那么最终将会把这条数据显示出来。

示例

 (1) SELECT * FROM A WHERE EXISTS (SELECT 1);

  • 括号中的子查询永远返回true,此次查询相当于SELECT * FROM A

 (2) SELECT * FROM A WHERE EXISTS (SELECT * from B where B.id= null);

  • 括号中的子查询查询不到数据永远返回false,此次查询无结果显示

总结

子查询会对外查询的每一条数据进行判断是否显示,如果子查询查询到数据则对应数据显示,否则不显示。

                                                                                      个人理解如果有不对的地方请进行提出留言

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL,可以使用EXISTS关键字来判断一个子查询是否返回了结果。当使用EXISTS关键字时,如果子查询返回的结果集非空,那么外部查询将会返回true,否则返回false。具体的语法如下: SELECT 字段 FROM table WHERE EXISTS (subquery); 在这个语句,table是你要查询的表,字段是你需要查询的字段。subquery是一个子查询,它可以是一个完整的SELECT语句,也可以是一个包含WHERE子句的子查询。 举个例子,假设我们有一个名为customers的表,其包含了顾客的信息。我们想要查询那些已经下过订单的顾客,可以使用以下语句: SELECT * FROM customers WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.customer_id); 在这个例子,子查询SELECT 1 FROM orders WHERE orders.customer_id = customers.customer_id返回了一个非空结果集,表示有订单的顾客。而外部查询的结果就是这些顾客的信息。 除了EXISTS关键字,还有一个与之相对的关键字NOT EXISTS。它的使用方法与EXISTS一样,只是在子查询返回结果集为空时返回true,非空时返回false。具体的语法如下: SELECT 字段 FROM table WHERE NOT EXISTS (subquery); 所以,通过使用EXISTS和NOT EXISTS关键字,我们可以根据子查询的结果来判断某些条件是否满足,进而对查询结果进行筛选和过滤。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysqlexists用法详解](https://blog.csdn.net/zhangzehai2234/article/details/124652056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQLEXISTS用法](https://blog.csdn.net/tunan666/article/details/113924733)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值