您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL中,select 后的子查询的一些理解

bubuko 2022/1/25 20:09:03 其他 字数 800 阅读 827 来源 http://www.bubuko.com/infolist-5-1.html

首先我们假设有表A,B 现在我们想知道A中的所有属性a,于是我们写出 这个时候,数据库便会去遍历A表中的每一行,并将其作为结果输出,假设A表中有n行,那么最后的结果也就是n行 在此基础上,如果我们不光想知道的所有的A.a,还有在B表中,有多少行 B.a 与 A.a对应的 A.b 相等,于是我们写出 ...

首先我们假设有表A,B
现在我们想知道A中的所有属性a,于是我们写出

select A.a from A;

这个时候,数据库便会去遍历A表中的每一行,并将其作为结果输出,假设A表中有n行,那么最后的结果也就是n行

在此基础上,如果我们不光想知道的所有的A.a,还有在B表中,有多少行B.a 与 A.a对应的A.b相等,于是我们写出

select A.a,( select count(*) from B where B.a = A.b ) from A;

数据库仍然会去遍历A表中的每一行,对于每一行,子查询中的A.b也会获得一个值,用于完成子查询,子查询的结果被附在结果集上,被输出出来
也就是说,select后面的子查询不会影响结果的行数,只是可以把from后方,表每一行的属性借来一用

对于exists也是如此,只不过它可以改变结果的数量

SQL中,select 后的子查询的一些理解

原文:https://www.cnblogs.com/ZGQblogs/p/12390112.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶