exists用法

 我来答
海边的鸟儿啊
高粉答主

2020-02-19 · 希望能自由的飞翔
海边的鸟儿啊
采纳数:1108 获赞数:581612

向TA提问 私信TA
展开全部

exists用法:select a.* from tb a where exists(select 1 from tb where name =a.name)

返回真假, 当 where 后面的条件成立,则列出数据,否则为空。

exists强调的是是否返回结果集,不要求知道返回什么。

比如:select name from student where sex = 'm' and mark exists(select 1 from grade where ...)

只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。

扩展资料

exist 相当于存在量词:表示集合存在,也就是集合不为空只作用一个集合。例如 exist P 表示P不空时为真;not exist P表示p为空时为真,in表示一个标量和一元关系的关系。例如:s in P表示当s与P中的某个值相等时为真; s not in P 表示s与P中的每一个值都不相等时为真。

in 把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询。

绝对的认为exists比in效率高的说法是不准确的。这要看关联表的数据量大小。

如果查询的两个表大小相当,那么用in和exists差别不大。

如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式