凡事都在事上磨,这样才能精进,成长进步提高! ------ 博客园首页

Mysql 中Exists

exists

exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录;反之,如果exists里的条件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为false

如下:

代码语言:javascript
复制
select * from user where exists (select 1);

对user表的记录逐条取出,由于子条件中的select 1永远能返回记录行,那么user表的所有记录都将被加入结果集,所以与select * from user;是一样的。

又如下:

代码语言:javascript
复制
select * from user where exists (select * from user where user_id = 0);

可以知道对user表进行loop时,检查条件语句(select * from user where user_id = 0),由于user_id永远不为0,所以条件语句永远返回空集,条件永远为false,那么user表的所有记录都将被丢弃。

总结:如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件。

posted @   追风fc  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 上周热点回顾(2.17-2.23)
历史上的今天:
2023-08-14 15项设计原则
2023-08-14 十年架构感悟
2023-08-14 分布式系统架构
2022-08-14 校正centos服务器时间
2022-08-14 CentOS下nginx的安装流程
2022-08-14 centos xz解压
2022-08-14 CentOs7安装node
点击右上角即可分享
微信分享提示